0

所以,我正在学习(和使用)一个数据库,到目前为止我认为我正在理解它

今天,以下示例出现了一个问题:

我有一个带有身份的表(例如,对象,它有一个名称和一个物理描述,当然还有一个主要的自动增量整数索引)。而且我有与之交互的身份(例如人)。

有没有办法在我的数据库中对这些身份进行分类?例如,假设机械师只与一组非常特定的对象(工具、汽车部件等)进行交互。因此,将机制对对象的任何搜索限制在该系列中是有意义的。

关于解决这个问题的自然方式(如果有的话)的任何提示?谢谢

4

1 回答 1

3

您需要一个带有 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
于 2012-11-08T19:47:22.983 回答