php - 填充第三个表以保持效率

标签 php mysql sql

我目前正在为一个 PHP/MySQL 项目工作。在完成作业时研究数据库的高效设计时,我注意到在许多情况下,在仅处理两组数据时创建第三个表是一种很好的做法。

例如,如果我们有一张“学生”表和一张“地址”表,创建第三张表似乎是个好主意,即“Student_Addresses”,因为假设一个学生可以有多个地址(分开 parent 等),一个地址可以代表多个学生( sibling )。

我的问题是:我们如何着手填充第三个表?有没有一种方法可以使用主键和/或外键自动完成?

我试过谷歌和我的教科书来理解这一点,但我一无所获。非常感谢指向教程或文章的链接。

感谢您的帮助。我希望问题和例子很清楚。

最佳答案

n:m 或 1:m 归一化规则

选项 1:

user table
id
f_name
s_name
......

user address table
id
user_id    // this should be index only as foreign keys will allow 1:1 only
address line 1
address line 2
address line 3
address_type (home, office ....)

选项 2:

user table
id
f_name
s_name
......

address table
id
address line 1
address line 2
address line 3
address_type (home, office ....)

user_address table
userId
addressId

根据您的描述,选项 2 是正确的解决方案。将数据添加到 user 表和 address 表后,您需要手动将数据添加到 user_address 表。某些对象关系映射器 (ORM) 可能会自动将数据添加到第三个表,但您需要定义关系。检查http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html .

http://docstore.mik.ua/orelly/linux/sql/ch02_02.htm

http://www.keithjbrown.co.uk/vworks/mysql/mysql_p7.php

关于php - 填充第三个表以保持效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850595/

相关文章:

php - 表单重复插入所有用户的数据

mysql - 如何在运行时指定输入

php - ubuntu 14.04 中 PHP 的 couchbase 客户端

php - 如何在数字列表中显示第 N 个项目之后的项目

php - 选择与特定值匹配的所有列,该值可以为空

php - WordPress - post_meta vs 分类法 vs 自定义表

php - 如何在MySQL数据库中插入一条记录时触发PHP脚本

php - Laravel 5.2 外键错误

mysql - MySQL 中的数据透视表

sql - 了解 VBA 以连接到 SQL