gpt4 book ai didi

sql - 规范化自引用属性

转载 作者:行者123 更新时间:2023-12-02 08:41:21 25 4
gpt4 key购买 nike

在包含有关 的信息的数据库中,规范化有关配偶 的信息的最佳方法是什么?

数据包括:

person_id
first name
middle name
last name
phone number
address
vehicle
house
health
destiny
items
spouse first name
spouse middle name
spouse last name
spouse phone number
spouse address

我正在考虑保留一个表来考虑所有 persons(配偶或其他)并区分 spouse 如果它的行具有 的值另一个的person_id。这种 self 引用是否可取?

我还打算为重复数据创建表格。如healthvehicle

最佳答案

规范化配偶信息包括删除 spouse * 列。如果你想要一个自引用表,你应该有一个引用 person_idspouse_id 列;但不要重复所有配偶信息,如姓名、地址和电话号码。

对于像人对车这样的一对多关系,是的,您需要在“多”端(例如 vehicle)上带有 person_id 的表FK 列。

此外,强烈考虑将 address 拆分到它自己的表中。如果您计划将一个地址的所有元素存储在这一列中,那将是非规范化的 (< 3NF):它们应该被分解成不同的列(例如 street自治市地区等);这些真的很想放在不同的表格中。

自引用表是否可取?这真的取决于情况;但根据我的经验,它们在数据中自然出现的地方是有意义的:我认为你所概述的通用“人”场景是合格的。相比之下,考虑一个相当人为的“图片”场景 - 表 picture 包含一个 of_picture_id 列来覆盖图片的图片......图片的......(嗯,现在这对我来说听起来并不那么做作……;但希望你明白了。)

关于sql - 规范化自引用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16228112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com