|
1
33
很难说,这是基于应用程序的需求。我会说去调查 Database Normalization 因为它将向您展示如何规范化数据库,并且它将阐明您希望将哪些内容分离到它们自己的表中等等。 |
|
|
2
25
我参加了正规化训练营。 以下是一些让您入门的提示:
从一个进程开始,为每个进程分配一些任意的唯一标识符
“人”。把这个叫做
在开发数据库布局时,您可能会发现必要的代理键(或者至少有用) 还有一些其他属性。 查看要管理的每个属性。提出以下问题: 任何给定的人对此属性只有一个值吗?
例如,每个人
只有一个“出生日期”。但是他们怎么可能有“爱好”?可能是零对多。
单值属性(如出生日期、身高、体重等)是进入
公用表
嗜好等多重价值属性需要稍有不同
治疗。您可能需要为每个多值属性创建单独的表。把业余爱好作为
示例您可以创建下表
如果有相当多的多值属性
其中的组合
如果你走这条路,最好换一个
这个
有些属性可能有多个关系,这也会影响表的规范化方式。我没有
在您的示例中看到这些依赖项中的任何一个,请考虑以下内容:假设我们有一个仓库
全是零件,
规范化是一门相当微妙的艺术。您需要确定功能依赖性 它存在于数据模型中的所有属性之间,以便正确地执行。只是 提出功能依赖性需要一些思考和考虑——但是它 对于正确的数据库设计至关重要。 我鼓励你花时间 在构建数据库之前,请进一步研究规范化。在这里呆了几天 将不仅仅是为自己付出代价。尝试在谷歌/维基百科上搜索 “功能依赖”、“规范化”和“数据库设计”。阅读、学习、学习,然后正确地构建它。 我在规范化数据库设计方面提出的建议只是关于您可能需要采取的方向的提示。在没有对您试图在应用程序中管理的所有数据有很强的了解的情况下,这里给出的任何建议都应该用“盐粒”来表示。 |
|
|
3
8
我推荐几张桌子。过度规范化是很难管理的,您最终会编写复杂的查询,但最终会导致性能下降。 只有在绝对需要的时候才能正常化,并用逻辑的方式思考。由于您在上面提供的信息有限,我将选择三个表: 表1: 个人详细信息 表2: 活动 表3: 其他 还有其他一些技术可以加速性能,如集群等,您可以根据需要使用这些技术。 |
|
|
4
6
根据你所描述的,我肯定会把它分成多个表。不过,我不会对任意数量的列进行拆分,而是尝试考虑列的逻辑集合,这些列要么组成一个实体,要么与要用来访问数据的访问模式相匹配。 |
|
|
5
6
在我看来,更重要的是要担心存储数据的质量,而不是您需要的表的数量。 例如,是否需要跟踪更改?如果约翰在2007年1月是5尺2寸,在2010年10月是5尺11寸,你想知道吗?如果是这样,你需要把这个人从高处分为两张桌子。 业余爱好怎么样?他们只允许有3个业余爱好吗?他们能多多少少吗?这是您将来要查询的内容吗?如果是这样,您需要一张单独的桌子。 您应该了解数据库设计和规范化(这个站点本身有几个优秀的线程)。 |
|
|
6
5
除非每个人都有相同数量的爱好(即每个人都有2个列出的爱好),否则应该将其规范化。 与人员总是1到1的字段应在同一个表中。例如年龄。没有人会有两个不同的年龄。 |
|
|
7
3
这个问题没有正确的答案,因为它很大程度上取决于您将在何时和如何使用您的数据,它将更改的频率,以及数据库上的使用量。 我个人会做的是将数据组织成逻辑实体,并基于这些实体创建表。这至少是我要开始的地方。 |
|
|
8
3
没有一个数据库组织是100%正确的,只有一个对您的目的足够好。如果您没有预见到将来会超过一个好的数据库服务器的能力,那么规范化数据并使用大量的约束,例如外键、级联删除等等,这将使您的数据库工作起来非常愉快。另一方面,如果您查看许多具有数十亿请求的应用程序的数据库,您会发现它们以性能和可伸缩性的名义放弃了许多这些细节。 |
|
|
9
2
许多小表(即规范化)在这里是最好的。它提供了灵活性,减少了冗余和更好的数据库组织。 |
|
|
blogger13 · 视频租赁店数据库的规范化 1 年前 |
|
|
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
Grenish Rai · Firestore错误“用户文档不存在” 2 年前 |
|
|
Saijo-Shi · PLpgsql中的更新触发器 2 年前 |
|
Dante · Django::配置不当:池不支持持久连接 2 年前 |
|
YouLocalRUser · 删除重复行,保留第一行 2 年前 |