天道酬勤,学无止境

composite-primary-key

Hibernate annotations to map one to one unidirectional association with composite primary key

问题 我有两个表:报告和扉页。 报告由'id'和'index'标识,它们是flyleaf表中的外键和主键。 表的架构是: CREATE TABLE `report` ( `id` int(11) NOT NULL, `index` varchar(5) NOT NULL, `nb_page` int(11) DEFAULT NULL ); ALTER TABLE `report` ADD PRIMARY KEY (`id`,`index`); CREATE TABLE `flyleaf_t` ( `id` int(11) NOT NULL, `index` varchar(5) NOT NULL, `title` varchar(30) DEFAULT NULL, `author` varchar(30) DEFAULT NULL, `checker` varchar(30) DEFAULT NULL ); ALTER TABLE `flyleaf` ADD PRIMARY KEY (`id`,`index`); ALTER TABLE `flyleaf` ADD CONSTRAINT `flyleaf_ibfk_1` FOREIGN KEY (`id`,`index`) REFERENCES `report` (`id`, `index`); 我使用 Hibernate

2022-05-16 10:35:04    分类:技术分享    java   hibernate   one-to-one   composite-primary-key

Sequences with composite primary key

问题 使用 PostgreSQL,我如何管理以下场景的序列(自动递增的整数 id)- 名为“businesses”的表,其中包含“id”和更多列。 名为“用户”的表具有: 一个复合主键,由一个“business_id”和一个“id”组成,并让“id”重置它在我现在插入行时为每个“business_id”计数。 一个简单的列“名称”。 就像每个企业有一个单独的序列一样。 例子 当我运行以下查询时: 插入用户(business_id,name)值(1,'a') 插入用户(business_id,name)值(2,'b') 插入用户(business_id,name)值(1,'c') 我想最终得到以下“用户”表: 业务 ID、ID、名称 1, 1, '一个' 1, 2, 'c' 2, 1, 'b' 回答1 INSERT INTO [users] (business_id, id) FROM ( SELECT ID - (SELECT MIN(ID) FROM [users] WHERE business_ID = B.ID) AS business_id ,(SELECT MAX(ID)+1 FROM [users] WHERE business_ID = B.ID) AS ID FROM [businesses] B ) 如果将此链接到要添加的新条目,它应该提供复合键 新更新:

2022-05-06 13:07:43    分类:技术分享    postgresql   primary-key   auto-increment   composite-primary-key

Hibernate Many to Many on many to

问题 我正在尝试使用注释将现有数据库映射到 Hibernate。 问题如下。 'organization' 和 'organization_roles' 具有多对多关系,这在表 'organization_has_roles' 中使用两个主键作为连接表中的复合主键来解决。 接下来是一个“用户”表。 用户可以在多个组织中拥有一个角色。 这再次在名为“users_has_organizations_and_role”的连接表中解决,该表具有“user_id”、“organization_id”和“organization_role_id”的复合主键以及“user_id”和“organization_id”上的唯一索引。 “users_has_organizations_and_role”引用了“organization_has_roles”复合主键(organization_id,organization_role_id)和用户表(user_id) 我无法找到有关此问题的有效示例。 是否可以映射这个。 我应该使用哪些注释以及如何使用? 我正在使用 Hibernate 4,虽然它可能无关紧要.. 回答1 这种方法的主要问题是您有一个不可映射的 ORM 不匹配:您的数据库中有一个实体 ( organization_has_roles ),它在 OO 中被翻译为关系。 由于此关系不是实体

2022-05-03 21:49:27    分类:技术分享    hibernate   annotations   many-to-many   composite-primary-key

Hibernate Many to Many on many to

I´m trying to map an existing database to Hibernate using annotations. The problem is as follows. 'organization' and 'organization_roles' has a many to many relationship which is resolved in a table 'organization_has_roles' using the two primary keys as a composite primary key in the join table. Next there is a 'users' table. Users can have a single role in multiple organizations. This is again resolved in a join table named 'users_has_organizations_and_role' which has a composite primary key of the 'user_id', 'organization_id' and 'organization_role_id' and a unique_index on the 'user_id' and

2022-04-30 15:25:54    分类:问答    hibernate   annotations   many-to-many   composite-primary-key

Sequences with composite primary key

Using PostgreSQL, how do I manage a sequence (auto incremented Integer id) for the following scenario- Table named 'businesses' which has 'id' and some more columns. Table named 'users' which has: a composite primary key, composed of a 'business_id', and an 'id', and have the 'id' reset it's counting for each 'business_id' when I insert now rows. a simple column 'name'. something like having a separate sequence per business. Example When I run the following queries: insert into users (business_id, name) values (1, 'a') insert into users (business_id, name) values (2, 'b') insert into users

2022-04-29 19:25:47    分类:问答    postgresql   primary-key   auto-increment   composite-primary-key

Hibernate annotations to map one to one unidirectional association with composite primary key

I have two tables : report and flyleaf. A report is identified by an 'id' and an 'index' which are foreign and primary keys in flyleaf table. The schema of the tables are : CREATE TABLE `report` ( `id` int(11) NOT NULL, `index` varchar(5) NOT NULL, `nb_page` int(11) DEFAULT NULL ); ALTER TABLE `report` ADD PRIMARY KEY (`id`,`index`); CREATE TABLE `flyleaf_t` ( `id` int(11) NOT NULL, `index` varchar(5) NOT NULL, `title` varchar(30) DEFAULT NULL, `author` varchar(30) DEFAULT NULL, `checker` varchar(30) DEFAULT NULL ); ALTER TABLE `flyleaf` ADD PRIMARY KEY (`id`,`index`); ALTER TABLE `flyleaf`

2022-04-28 10:51:48    分类:问答    java   hibernate   one-to-one   composite-primary-key

MyISAM vs InnoDB for quick inserts and a composite unique key

问题 上下文:我正在创建一个多线程应用程序,它将非常频繁地插入/更新行。 最初我有下表: #TABLE 1 CREATE TABLE `example` ( `id` BIGINT(20) NOT NULL, `state` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`, `state`)) ENGINE = MyISAM; 然而,在做了一些研究之后,我发现 MySQL 对 MyISAM 表使用表级锁定,一次只允许一个会话更新这些表(来源)。 对于频繁更改表的多线程应用程序不利。 因此,建议我从复合主键切换到自动生成的主键,该主键具有唯一的 id/state 索引。 这将允许快速插入,同时仍然强制执行 id/state 的唯一组合。 #TABLE 2 CREATE TABLE `example` ( `key` BIGINT(20) NOT NULL, `id` BIGINT(20) NOT NULL, `state` VARCHAR(45) NOT NULL, PRIMARY KEY (`key`), UNIQUE INDEX `ID_STATE` (`id` ASC, `state` ASC)) ENGINE = MyISAM; 然而,InnoDB 避免了表锁,而是使用行级锁(源),所以我想切换到以下内容: #TABLE 3 CREATE

2022-04-26 07:30:15    分类:技术分享    mysql   innodb   myisam   composite-primary-key

How to implement an auto_increment composite primary key with MySQL InnoDB?

问题 我有一个表,它有一个复合主键,由一个非 auto_increment 列和一个 auto_increment 列组成。 auto_increment 列需要为每个非 auto_increment 列值单独递增(稍后会详细介绍)。 存储引擎是 InnoDB。 由于性能问题,我不希望锁定表。 插入值后,必须有一种方法可以检索最后一个 auto_increment 值。 下面的脚本一开始可以工作,但最后一个 INSERT 结果是 id,检查帐户 ID 是3, 2 ,但需要1, 2 。 这就是我所说The auto_increment column needs to increment individually for each of the non-auto_increment column values 触发器和存储过程都是可以接受的,PHP/PDO 应用程序解决方案也是可以接受的,它以某种方式模仿 MySQL 的 auto_increment 行为。 mysql> EXPLAIN checkingaccounts; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------

2022-04-26 07:04:09    分类:技术分享    mysql   composite-primary-key

Why is it necessary to indicate identifying or non-identifying relationships in an ERD?

问题 在 ERD 中,弱/非识别关系是连接两个强实体的关系,并用虚线表示。 强/标识关系是将强实体连接到弱实体(弱实体是包含来自其相关实体的外键 [FK] 作为其自己的主键 [PK] 的组成部分)的关系,并被指示用实线。 我的问题是,那又怎样? 为什么区分弱/非识别关系与强/识别关系如此重要,以至于 ERD 设计人员应该分别用虚线和实线来区分? 为什么这么重要? 对我来说,ERD 中的每个元素和约定都应该添加必要的信息,这些信息要么直接转化为数据库设计(即 DDL SQL 语句),要么至少解释重要但不一定明显的信息(以及最后一种情况的示例将命名关系——它们不会转换为 SQL,但它们对于理解 ERD 非常有用)。 下面是一个示例 ERD,用于讨论(根据另一个 StackOverflow 问题修改): 我已经考虑了很多,对我来说,实线与虚线添加的唯一信息已经在以下约定中充分传达: FK 是否是实体 PK 的一部分(示例 ERD 中的 PK,FK1 或 PK,FK2)。 FK 是必需属性(粗体)还是可选属性(非粗体)。 据我所见,实线与虚线关系线没有添加额外的有用信息。 这种约定不是添加信息,而是不直观且非常混乱。 作为它们引起的混乱的一个例子,StackOverflow 上有许多重复的问题,询问哪个是哪个; 这里只是几个例子: 如何识别 ERD 上的强弱关系?

2022-04-24 00:38:04    分类:技术分享    database-design   foreign-keys   composite-primary-key   erd

SQL Server "pseudo/synthetic" composite Id(key)

问题 对不起,但我不知道如何在标题中调用我需要的东西。 我想创建一个唯一键,其中每两位数字标识其他表 PK。 假设我在这 3 个表中有以下 Pks: Id Company Id Area Id Role 1 Abc 1 HR 1 Assistant 2 Xyz 2 Financial 2 Manager 3 Qwe 3 Sales 3 VP 现在我需要在其他表中插入值,我知道我可以在 3 列中执行并创建一个复合键以达到完整性和唯一性,如下所示: Id_Company Id_Area Id_Role ...Other_Columns..... 1 2 1 1 1 2 2 2 2 3 3 3 但我正在考虑创建一个列,其中每个 X 数字标识每个 FK。 所以上表 3 的第一列如下所示(假设 FK 中的每个数字) Id ...Other_Columns..... 121 112 222 333 我不知道如何称呼它,即使它很愚蠢,但对我来说很有意义,我可以在其中选择单个列,如果需要一些连接,我只需要根据我的定义将每个 X 位的数字拆分。 回答1

2022-04-22 21:29:18    分类:技术分享    primary-key   composite-primary-key   sql-server-2014-express