【发布时间】:2013-08-13 00:41:40
【问题描述】:
首先有一个用户名/密码验证步骤,然后数据库具有以下结构
^ is primary key
* uses foreign key
1.StudentDetails table
===========================================================================
ID^| Username | Password | Email | Address * | Website |Comments
====+============+==========+=============+===========+=========+==========
1 | xxxxxxxxxx | xxxxxxx | xx@xxx.xxx | 1 | http:// | text
2.Submissions table
===========================================================================================
ID^|Username*|SubmitDate|SelectedCourse*|Price*|Promotion*|SubmitComments|SubmitStatus*
===+=========+==========+===============+======+==========+==============+=================
1 |xxxxxxxxx|2013-7-12 | int | int | int | text | int
3.SubmitComplete table
==================================================
ID^| Username * | SelectionDate | SubmitStatus *
====+============+===============+================
1 | xxxxxxxxxx | 2013-08-01 | int
现在我在输入地址时遇到问题,当我尝试输入学生详细信息时,它不会接受,直到有地址字段,如何最好地解决这个问题? 当我从 StudentDetails 中选择某些字段并从 Addresses 中选择某些字段时,地址不显示。
我是一个 mysql 菜鸟,所以我想要一些指导,看看规范化和结构是否正确完成,或者可以做得更好,这里是 fiddle 我无法让它正常工作,尽管架构的构建在我的机器上运行良好,但在我添加外键的行上不断出现错误。
小提琴控制台在第 2 行显示错误,但在我看来它实际上在第 76 行。 如果有什么我不清楚的,请告诉我。 谢谢
【问题讨论】:
-
我会使用用户 id 作为提交和提交完成表中的外键,而不是用户 name。 (并在 student.username 上添加唯一约束)
-
@wildplasser 我不确定我是否正确理解你,但如果我这样做,那就是我所做的,你可以在小提琴 Submissions.Username 和 SubmitComplete.Username 中看到它都使用 StudentDetails.id 作为关键,我没有做的是唯一的约束。
-
嗨,鲍勃,我为你准备了新的小提琴。我没有用值填充表格,只是创建了它们,但在底部你可以看到我的 cmets 到你的小提琴。你可以在这里找到小提琴sqlfiddle.com/#!2/c03dd
-
@Wirus 感谢您的帮助 cmets(像往常一样)我认为我的小提琴的问题没有首先索引键(noob 错误...lol Ooops)至于您的 cmets,地址 1、2 3不是不同的地址,它为更长的地址添加了字段,不同的国家有不同的地址结构。提交费用、价格、课程和促销是 4 个不同的实体,费用每年支付一次,不管有多少课程,可以添加新课程,其中价格可能会每年变化,促销折扣只影响课程价格而不影响提交费用,这就是我这样做的原因,这有意义吗?
-
嗨,Bob,您必须考虑哪些属性属于哪个对象。课程有价格。在您的旧结构中,您将有许多记录一门课程,但不同年份。因此,您可以将价格列添加到课程表中。或者您可以创建包含 startDate、endDate、price 的 CourseDetails 表,并在 Course 中仅存储一些常见字段,如 courseName、courseDesc 等。另一方面,Course 的 Promos 可能很少,用户可以选择一个。所以恕我直言,它应该是提交的财产。但这只是一个简短的评论,因为我什至没有足够的时间思考你的答案
标签: mysql foreign-keys relational-database database-normalization