我确信我要做的是基本练习,但我无法找到解决方案。我搜索了外键,但我认为这不是我需要的。
我想要的行为:我有一个应用程序,其中有一个"位置"标签和"联系人"标签。此数据将从数据库中提取。信息将以cms填写。用户可以为联系人选择两件事:从位置选择现有联系人(提取名称+邮件)或创建新联系人。在我的文件中,然后我从联系人表中提取数据,只显示选择元素中的行。(参见下面的简短示例)。
所以在我的联系表中我需要有两件事:从我的位置表引用名称+邮件或新记录(自定义邮件+名称)
我有两张桌子:
+-------------------+
| LOCATION |
+-------------------+
| primary |
| name |
| zip |
| mail |
| ... |
+-------------------+
+-------------------+
| CONTACT |
+-------------------+
| primary |
| (lid) |
| name |
| mail |
+-------------------+
位置和联系之间的关系是一对一/无关系。因此,可能存在没有联系的位置。
联系人可以是两件事:对位置的引用(然后从那里提取名称+邮件),这样当用户更新位置时,联系人将自动更新,或创建"自定义&# 34;联系。
前:
用户创建位置:name" Test" mail" test@mail.com"
用户选择"测试"用于创建新联系人:拉动"测试"和" test@mail.com"作为来自位置表的名称和邮件(当位置更新时也更新它)
用户创建联系人:name" Custom" mail" custom@mail.com"
然后我有一个联系表单,它从联系表中提取数据,然后显示:
<select>
<option>Test</option>
<option>Custom</option>
</select>
我怎样才能做到这一点?我知道解决方案,如果我只需要其中一个例子。例如,创建一个用户可以插入自定义数据的表格很容易。但是我如何结合一个&#34; custom&#34;和#34;关系&#34;功能?
提前致谢!
答案 0 :(得分:1)
您是否考虑对数据库进行规范化,以便将联系人存储在联系人表中,并对位置表中保存的联系人记录进行引用。
+-------------------+
| LOCATION |
+-------------------+
| id |
| contact_id |
| zip |
| ... |
+-------------------+
+-------------------+
| CONTACT |
+-------------------+
| id |
| name |
| mail |
+-------------------+
修改位置时,如果用户选择现有联系人,则可以将该ID存储在contact_id中。如果他们要添加新的联系人,请先让应用程序保存新联系人,然后使用这个新创建的联系人ID