标签: junction-table

连接表的主键/聚簇键

假设我们有一个Product表,Order表和一个(联结表)ProductOrder.

ProductOrder将具有ProductID和OrderID.
在我们的大多数系统中,这些表还有一个名为ID的自动编号列.

放置主键(以及群集密钥)的最佳做法是什么?

  • 我应该保留ID字段的主键并为外键对(ProductID和OrderID)创建非聚集索引

  • 或者我应该放置外键对的主键(ProductID和OrderID)并在ID列上放置非聚集索引(如果需要的话)

  • 或者......(你们其中一个人的聪明话:))

sql clustered-index junction-table

7
推荐指数
1
解决办法
3066
查看次数

实体关系模型和关系模型之间有什么区别?

我只能找到以下两个不同之处:

  1. ER模型中的关系是明确定义的,而它们隐含在关系模型中.
  2. 关系模型需要一个中间表(通常称为"联结表")来保存两个实现多对多关系的外键.

当我们有ER图时,为什么我们使用关系模型?

database entity-relationship relational junction-table entity-relationship-model

7
推荐指数
1
解决办法
2万
查看次数

为什么需要联结表来实现多对多关系?

这一直困扰着我,也许有人可以帮助澄清。

假设我有书和作者:一本书可以由许多作者写,而一个作者可以写很多书。

为什么我无法使用以下架构捕获此内容?为什么需要连接表?

图书
--------
图书ID(PK)
作者 ID (PK)
书名
作者
--------
作者 ID (PK)
作者姓名

database many-to-many junction-table

4
推荐指数
1
解决办法
4512
查看次数

postgresql 左连接多个条件

我仍然是 PostgreSQL 的 NB - 任何人都可以帮助解决这个查询:

select distinct j.id, tt.title, m_scopus.provider_id
from journal j   
join temporal_title "tt"   
     on (j.id = tt.journal_id and tt.list_index = 0) 
left join journal_metrics "jm_scopus"  
     on (jm_scopus.journal_id = j.id) 
left join metrics "m_scopus" 
     on (m_scopus.id = jm_scopus.metrics_id 
     and m_scopus.source_id = 235451508 
     and m_scopus.year_integer = 2017)
Run Code Online (Sandbox Code Playgroud)

问题是我得到了带有空“provider_id”的行,而我不想要它们:

journal_id     title                    provider_id
263290036      German Journal of...     scopusJournalsMetricsProvider
263290036      German Journal of...     NULL
72418282       Europa azul              NULL    
207412571      IAC International...     NULL
Run Code Online (Sandbox Code Playgroud)

第 1、3 和 4 行都可以,但第 2 行不行,因为我需要的信息是provider_id(如果存在),如果不存在则为 NULL。

postgresql left-join multiple-conditions junction-table

4
推荐指数
1
解决办法
1万
查看次数

数据库设计启用多个标签,如Stackoverflow?

我有以下表格.

文章
a_id INT主要唯一
名称 VARCHAR
描述 VARCHAR
c_id INT

类别
ID INT
cat_name VARCHAR

现在我只是使用

SELECT a_id,name,Description,cat_name FROM Articles LEFT JOIN Category ON Articles.a_id=Category.id WHERE c_id={$id}

这给了我所有属于某个类别的文章以及类别名称.
每篇文章只有一个类别.

我以类似的方式使用子类别(我有另一个名为sub_cat的表).
但是每篇文章都没有必要的子类别.它可能属于多个类别.

我现在想到标记一个包含多个类别的文章就像stackoverflow中的问题被标记一样(例如:有多个标签,如PHP,MYSQL,SQL等).

以后我必须显示(过滤)所有文章与某些标签(例如:标记为php,php + MySQL),我还必须显示标签以及文章名称,描述.
谁能帮我重新设计数据库?(我在后端使用php + MySQL)

mysql database database-design junction-table database-schema

3
推荐指数
1
解决办法
4001
查看次数

是否应在SQL连接/连接表中存储其他数据?

将附加数据存储在我的联接/连接表中是否有任何缺点?

例如,我正在研究货运公司的数据库,并且有3个表:

Table 1 - company,
Table 2 - trailer_type,
Table 3 - junction_table,
Run Code Online (Sandbox Code Playgroud)

每个公司可以有多个拖车类型,但是我还需要每个公司每种拖车类型的拖车数量。放置拖车计数的最合理的方法似乎是在与company.id和trailer_type.id的连接表中。

这样做有什么弊端吗?如果有,有没有更好的方法呢?

mysql sql relational-database junction-table

2
推荐指数
1
解决办法
1104
查看次数

连接/桥接表Oracle SQL

关于Oracle SQL中的连接表的快速问题.我理解他们的功能和他们在"多对多"关系中的角色,但是"一对多"关系呢?我有两张桌子,EmployeesPositions.每个员工只能持有一个职位,但每个职位可以有很多员工.例如,John Doe只能是销售主管,但公司有4名销售主管.这是我到目前为止编码的方式:

CREATE TABLE Positions (
position_id NUMBER(2) NOT NULL,
position_name VARCHAR2(25) NOT NULL,
CONSTRAINT pk_position PRIMARY KEY(position_id)
);

CREATE TABLE Employee (
emp_id NUMBER(3) NOT NULL,
emp_name VARCHAR2(30) NOT NULL,
emp_position NUMBER(2) NOT NULL,
emp_salary NUMBER(5) NOT NULL,
CONSTRAINT pk_employee PRIMARY KEY(emp_id),
CONSTRAINT fk_emp_pos FOREIGN KEY (emp_position) 
REFERENCES Position(position_id)
);

CREATE TABLE pos_emp (
position_id NUMBER(2) NOT NULL,
emp_id NUMBER(3) NOT NULL,
CONSTRAINT pk_pos_emp PRIMARY KEY(position_id, emp_id)
);
Run Code Online (Sandbox Code Playgroud)

它是否正确?是否需要:
a.Employee表中的外键?
湾 联结表? …

sql oracle foreign-key-relationship junction-table

1
推荐指数
1
解决办法
2476
查看次数

SQL Server:如何从只有ID的联结表中获取数据?

我有三张桌子(这里有例子).两个有数据,一个是连接表来处理很多:很多关系.

用户:

ID | UserName
====================
1  | Jeremy Coulson
2  | Someone Else
Run Code Online (Sandbox Code Playgroud)

存储库:

ID | RepositoryURI
====================
1  | http://something
2  | http://another
Run Code Online (Sandbox Code Playgroud)

存储库用户:

ID | UserID | RepositoryID
==========================
1  | 1      | 1
2  | 2      | 2
Run Code Online (Sandbox Code Playgroud)

因此,在此示例中,用户1与存储库1相关联.用户2与存储库2相关联.我现在需要搜索Repositories.RepositoryURI并返回Users.UserName.

我有这个问题:

select UserName 
from RepositoriesUsers 
join Users on Users.ID = RepositoriesUsers.UserID
join Repositories on Repositories.RepositoryURI = 'http://another';
Run Code Online (Sandbox Code Playgroud)

但是,它返回表中的每一行RepositroriesUsers.

如何将联结表与ID和其他表之间的数据与人性化文本进行匹配?

sql sql-server join junction-table

1
推荐指数
1
解决办法
411
查看次数

在联结表中插入值

我在数据库中有三个表:

 trips(trip_id(pk), trip_name(unique), user_id(fk))

 places(place_id(pk), place_name(unique))

 trips_places_asc(trip_id(fk), place_id(fk))
Run Code Online (Sandbox Code Playgroud)

因为,许多旅行可以有很多地方,我有一个如上所述的联结表.

现在,如果用户在旅行中插入地点,则会将地点添加到places表格中,并且旅行将与trips_places_asc表格中的地点相关联.

所以,如果我写的查询如下:

INSERT INTO places (place_name)
VALUES ('XYZ')

INSERT INTO trips (trip_name)
VALUES ('MyTrip')
Run Code Online (Sandbox Code Playgroud)

然后,如何存储trip_idplace_id在Junction或Association表中trips_places_asc?我必须解雇两个问题吗?请帮助.

注意:有很多关于SO的问题,比如这个这个问题.但是,他们都没有接受答案,甚至没有接受答案.所以,PLZ不标记为重复.

php mysql sql database junction-table

0
推荐指数
1
解决办法
459
查看次数