Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 需要对地址表进行规范化_Mysql_Database_Normalization_Database Normalization - Fatal编程技术网

Mysql 需要对地址表进行规范化

Mysql 需要对地址表进行规范化,mysql,database,normalization,database-normalization,Mysql,Database,Normalization,Database Normalization,希望这是一个可以接受的问题,而不是编程问题 我有一个包含多个表的数据库 学生 老师 父母 职员 所有这些都需要有对地址表的引用 地址 -门牌号 -街头 -城镇 -城市 -邮政编码 我的问题是: 如何创建一个数据重复很少的地址表。是否只有这样才能为每个表分别设置表 希望你们能提供建议。有一个单独的地址表,其中包含以下列 address_id door_number street town city state country postcode 现在,在每个表(学生、家长、教师、教职员工)中都有一

希望这是一个可以接受的问题,而不是编程问题

我有一个包含多个表的数据库

学生 老师 父母 职员

所有这些都需要有对地址表的引用

地址 -门牌号 -街头 -城镇 -城市 -邮政编码

我的问题是:

如何创建一个数据重复很少的地址表。是否只有这样才能为每个表分别设置表


希望你们能提供建议。

有一个单独的地址表,其中包含以下列

address_id
door_number
street
town
city
state
country
postcode
现在,在每个表(学生、家长、教师、教职员工)中都有一个address_id列,并为address表中的address_id创建一个外键


假设学生和家长已经相关,您可以在家长表中找到地址。

您可以在其他人之间使用一个共同的地址表。。但是如果不同实体共享同一地址,那么您可以在每个实体中保留该地址。学生、教师、家长和员工表的主键是什么?这不是正常化。感谢您的快速响应@Rocky。这是我的地址,但我认为地址表中仍然会有重复分配-例如,街道名称将重复200多次。我的问题是有没有更好的方法。你可以通过为街道、城镇、城市、州、国家等设置单独的表来完全规范化。这是一个很好的设计,但缺点是连接太多,无法获得所需的数据。您预计会有多少数据,您会使用它以最少的读取量存储数据吗?或者你会定期访问它吗?如果需求是存储和最低限度的读取,那么您仍然可以继续使用完全规范化的方法。然而,如果我们想要基于地址搜索、自由文本搜索和检索数据,那么规范化方法可能并不合适choice@MarkJames&洛基复制本身没有问题。您将复制与冗余和压缩混为一谈。标准化不会建议为street、town等创建单独的表,也不会引入像ID这样的新列。(如果引入id,则值的id将显示在该值已存在的任何位置,因此不会减少重复次数。)