所以,我正在学习(和使用)一个数据库,到目前为止我认为我理解它
今天,以下示例出现了一个问题:
我有一个带有标识的表(例如,对象,它们有一个名称和一个物理描述,当然还有一个主要的自动增量整数索引)。而且我有与之相互作用的身份(例如人)。
有没有办法在我的数据库中对这些身份进行分类?例如,假设机械师仅与一组非常具体的对象(工具,汽车零件等)进行交互。因此,将对象的任何搜索限制在该集合的对象上是有意义的。
有关解决此问题的自然方式(如果有)的任何提示? 感谢
答案 0 :(得分:3)
您需要一个带有ID和描述的表类别
一个对象可以有很多类别,一个类别可以有很多对象。所以我们面临many to many relationship。
您需要第三个表格,我们称之为junction table。该表将具有类别的id和对象的id。
设计看起来像这样
Category
Id | Description
Object
Id | Description
Person
id | Type | ...
Categories_Objects
Id | CategoryId | ObjectId
然后,如果你想选择一个类别为1的机制的对象(这是一个例子,你需要先找到id)
你会做这样的选择
SELECT Object.Description
FROM Object
INNER JOIN Categories_Objects ON Object.id = Categories_Objects.ObjectID
WHERE CategoryID = 1
OR
SELECT Object.Description
FROM Object
INNER JOIN Categories_Objects ON Object.id = Categories_Objects.ObjectID
INNER JOIN Category ON Categories_Objects.CategoryId = Category.id
WHERE category.description = "Mechanic"
注意:如果一个人可以使用多种类别的工具,您将需要另一个这样的联结表
Persons_Categories
ID | PersonID | CategoryID