我有一个要存储在数据库中的项目列表。每个项目可以与一个或多个预定类别相关联。类别列表可能会随着时间的推移而增长。将一个项目与一个或多个类别(对象)关联的最佳方法是什么?我想过将序列序列化并将其放入单个单元格中,但这似乎违背了关系数据库的整个想法。
我可能需要的功能可能是按类别过滤项目列表并查找属于某个类别的所有项目。
所以回应评论我会更加清楚道歉。
那么快速举例如何:
假设您有一份食物清单,每种食物都可归类为不同类别。你可以有一个简单的表
food_name | category
Apple | sweet
Chicken | Cooked food
如果你想将食物分为两类,你应该怎么做?
Apple | sweet
Chicken | Cooked food
Apple pie | cooked food, sweet
biscuit cracker | salty, snack food
我认为这不是一个好方法,因为它涉及编码和解码的另一个步骤。所以我想知道是否有更好的方法可以基本上将数据列表存储在表格的单个单元格中?
PS道歉我使用屏幕阅读器,所以希望你理解我想要的表格。
答案 0 :(得分:1)
这是一个标记系统。在它最简单的化身中它使用三个表。在您的情况下,它们将是Foods
,Categories
和FoodCategories
。
Food
包含FoodID
列或FoodName
列PRIMARY KEY
。该值唯一标识每条记录。它还可以包含与该食物相关的任何其他列(仅限该食物)。
Categories
包含Category
列PRIMARY KEY
。它还可以包含有关该类别的描述性列。
最后,FoodCategories
恰好包含两列,FoodID
和Category
。 FoodID
是表FOREIGN KEY
的{{1}},而Foods
是表Category
的{{1}}。两列在一起(FOREIGN KEY
)是此表的Categories
。
要将食物“添加”到某个类别,您可以FoodID, Category
将记录添加到PRIMARY KEY
表中。要将同一食物添加到另一个类别,您可以在此表格中INSERT
另一个记录。要从某个类别中删除食物,请FoodCategories
相应的记录。