我有一个简单的任务要完成,我不知道最好的方法是什么。
我的数据库中有一个清单表,我需要关联一个规范列表,这是一个代理必须选择的复选框列表。
表格看起来像这样。 - ID - 大小 - 类型 - 位置
现在我该如何存储复选框值? 我是否创建了一个新表“Listings_Specs”并通过“listing_id”将每一行与“Listings”表相关联,或者我应该将它保存在“Listings”表中并向其中添加其他字段。
顺便说一下,我正在使用Laravel 4。
答案 0 :(得分:0)
如果listing和listing_specs具有1对1的关系,则不需要表listing_specs,可以在Listing表中添加字段。
修改
if you have multiple values in a single field therefore you have to promote this field to a table.
`
Listing:
remove the field for the specs
Listing_specs:
ID | CONTENT | LIST_ID
1 | "fsafs" | 1
2 | "fsafs" | 1
3 | "fsafs" | 1
4 | "fsafs" | 2
5 | "fsafs" | 3`
答案 1 :(得分:0)
如果不了解您的具体需求,很难告诉您最佳的出行方式。通常,最好创建一个新表并将其与" Listings" table via" listing_id"像你提到的那样。这为您提供了更大的灵活性。请记住索引" listing_id"。
另一种方法是将所有复选框直接包含在"列表"表。您可以为每个复选框添加一列。这是最简单但最不灵活的方式。如果复选框的数量随时间而变化,则必须继续修改表格。
或者,您可以为所有复选框添加一个字段。此字段的每个字节代表一个复选框,因此字节数应与复选框的数量相同且顺序相同(或者您必须在某处指定顺序)。这有点复杂,也不是很灵活,因为每次更改复选框时都必须修改此字段。但是,优点是你可以使用一个字段,如果你有很多复选框,它可以很方便。如果您更喜欢可读性,可以使用字符(即1和0)而不是字节。
示例:假设您有5个复选框,"列表"表格如下:
ID | specs
1 | "10110"
2 | "01100"
3 | "11100"
4 | "00010"
5 | "01010"
所以,我会选择你提到的第一个解决方案,但这实际上取决于你的需求。
答案 2 :(得分:-1)
这听起来像他们可能希望你将来添加更多的东西。我不愿为您计划跟踪的每个规范创建列。
相反,最好创建一个名为Specification
的新模型,该模型与Listings
有许多关系。
然后,检查状态将依赖于Specification
和Listing
之间通过多对多联接表存在的连接。