English 中文(简体)
MySQL - 自动加固+复合初级钥匙——绩效和完整性
原标题:MySQL - autoincrement + compound primary key - performance & integrity

我有一个数据库设计,利用复合主要钥匙确保独一无二,也是外国钥匙。

这些表格以同样方式与其他表格相连接,因此最终复合钥匙可达到4或5列。 这导致了一些相当庞大的日本航天研究所,因此,我认为一个简单的解决办法是使用一个汽车加固栏,该栏不是主要钥匙的一部分,而是作为其他表格的主要部分。

Here is some pseudo code showing the general layout :

CREATE TABLE Item (
id AUTO_INCREMENT,
...
PRIMARY KEY (id)
) ENGINE = InnoDB;

CREATE TABLE PriceCategory (
id AUTO_INCREMENT,
...
PRIMARY KEY (id)
)

CREATE TABLE ItemPriceCategory (
itemId,
priceCategoryId,
id AUTO_INCREMENT,
...
UNIQUE INDEX id,
PRIMARY KEY (eventId, priceCategoryId)
)

CREATE TABLE ClientType (
id AUTO_INCREMENT,
...
PRIMARY KEY (id)
)

CREATE TABLE Price (
itemPriceCategoryId,
clientTypeId,
id AUTO_INCREMENT,
...
UNIQUE INDEX id,
PRIMARY KEY (itemPriceCategoryId, clientTypeId)
)

table Purchase (
priceId,
userId,
amount,
PRIMARY KEY (priceId, userId)
)

表格名称已经修改,以保护无辜者。 此外,在参考文献方面,实际布局更为深入。

因此,我的问题是,从业绩和数据的完整性角度看,这是否是一项可行的战略? 是否最好从<编码>上所有参考表格中找到所有关键数据?

提前感谢。

最佳回答

一般说来,关于主要钥匙的建议是拥有一个单列的“无尽”、不可改变的主要钥匙。 自动加固剂是冰。

因此,我会推翻你的设计——你参加表格也应具有毫无意义的主要关键点。 例如:

CREATE TABLE ItemPriceCategory (
itemId,
priceCategoryId,
id AUTO_INCREMENT,
...
PRIMARY KEY id,
UNIQUE INDEX  (eventId, priceCategoryId)
)

这样,项目 价格一栏是适当的外国钥匙,与项目价格表中的主要关键环节有关。

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html 外国钥匙,以确保贵国数据库的一致性。

就业绩而言,从广义上讲,这一战略应当比合并时的复杂钥匙更快,但是,如果有一个指数良好的数据库,你可能实际上不会注意到差异。

问题回答

我认为,这里的译文已经丢失了,但我尽了最大可能提出“<>ER>/strong>图表。

总的来说,有两种办法。 第一个是宣传钥匙,第二个是每个表格都有一个自动加固的焚化装置作为PK

第二种做法往往是由使用DB<>/strong>作为物体保存的OMM工具驱动的,而第一个(使用关键传播)则比较常见于手工艺设计DB

一般来说,主要传播模式为“兰多问”提供了更好的业绩,主要是因为你可以“跳板”加入。 例如,在主要传播模式中,你可以直接加入<条码>。 www.un.org/Depts/DGACM/index_french.htm 在其他模式中,您必须加入<条码>。 页: 1 项目ID。

基本来说,主要传播模式基本上是关联性的,而另一个模式则由目标驱动。 投管处的工具要么倾向于使用单独的国际发展法(第二例),要么执行该模式,而是为发展提供其他好处。

你的榜样似乎试图利用这两种方法的某种组合——不一定是坏——如果你可以与原设计商交谈,那将有所帮助。


www.un.org/Depts/DGACM/index_spanish.htm 关键传播

“entergraph


Independent keys for each table enter image description here





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签