所以,我正在学习(和使用)一个数据库,到目前为止我认为我正在理解它
今天,以下示例出现了一个问题:
我有一个带有身份的表(例如,对象,它有一个名称和一个物理描述,当然还有一个主要的自动增量整数索引)。而且我有与之交互的身份(例如人)。
有没有办法在我的数据库中对这些身份进行分类?例如,假设机械师只与一组非常特定的对象(工具、汽车部件等)进行交互。因此,将机制对对象的任何搜索限制在该系列中是有意义的。
关于解决这个问题的自然方式(如果有的话)的任何提示?谢谢
所以,我正在学习(和使用)一个数据库,到目前为止我认为我正在理解它
今天,以下示例出现了一个问题:
我有一个带有身份的表(例如,对象,它有一个名称和一个物理描述,当然还有一个主要的自动增量整数索引)。而且我有与之交互的身份(例如人)。
有没有办法在我的数据库中对这些身份进行分类?例如,假设机械师只与一组非常特定的对象(工具、汽车部件等)进行交互。因此,将机制对对象的任何搜索限制在该系列中是有意义的。
关于解决这个问题的自然方式(如果有的话)的任何提示?谢谢
您需要一个带有 id 和描述的表类别
一个对象可以有很多类别,一个类别可以有很多对象。所以我们面临着多对多的关系。
您需要第三张表,我们称之为联结表。该表将具有类别的 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
或者
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