标签: relations

拥有多个相互排斥的一对一关系是一种不好的做法吗?

比方说,一个表car有一个一对一关系的表electric_cargas_carhybrid_car。如果 acarelectric_car,则它不能再出现在gas_car或 ahybrid_car等中。

这样的设计有什么问题吗?路上可能会出现的一些问题?

database-design relations

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

具有捆绑产品的产品的数据库设计

我正在为我的零售业务构建一个数据库系统。我设置了一些表格,它们是:

  • 产品
  • 购买
  • 销售量
  • 平衡

所有这些都相互连接,并且能够显示我的库存水平。

我遇到的问题是我还销售捆绑产品 - 其价格与各自的价格不同。
示例:我以 1 美元的价格出售一个橙子,以 1.2 美元的价格出售一个苹果;我以 3.8 美元的价格出售水果套餐 1(2 个橙子和 2 个苹果),以 7 美元的价格出售套餐 2(4 个橙子和 4 个苹果)。

有没有正确的方法来为这些产品包创建关系?

PS:我正在使用 FileMaker Pro 创建这个。

database-design relations filemaker

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

为有关系的几个表生成假数据

我有 3 个表,我想在其中生成UsersCategoryLink.

如何在表中插入包含表UserCategoryLinkUserID随机用户和表中User随机 id 的列Categories。在这个SQL 小提琴中,您可以看到带有一些值的表。

  • UsersCategoryLink 必须填充随机用户和类别。
  • 每个用户必须有两个类别。
  • UserIDCategoryID是主键,所以每个值都必须是唯一的。
  • 我正在使用 SQL Server Express。

一些信息的表格和关系我想要什么

sql-server insert random relations

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

我如何阅读 ERD 符号(鱼尾纹)以转换为自然语言?

背景

我试图确保我了解如何阅读 ERD(实体关系图)符号,以便我可以将其转换为自然语言解释。

我试图确保我可以解释一种将我在图中看到的内容转换为自然语言的方法。

让我们使用下图:(请不要太关注实际实体的正确性,它们仅用于我们的示例。)

ERD 样本

自然语言句子示例

公司地址

这是谈论从公司到地址的关系的正确方式吗?

一个公司有一对多的地址。(运输、计费等)。

这表明公司必须至少有一个地址,对吗?

这与我在图表中的符号相符吗?

公司连接

每个公司都有零到多个连接。

那是对的吗?这就是我在公司方面阅读双杠的方式吗?

两个公司侧连接器有何不同?

两个公司侧连接器是否表示任何不同?
你能解释一下吗?

自然语言翻译的一般帮助?

您是否有一种逻辑方法可以提供检查每个关系并转换为自然语言的步骤?

例如,使用公司到连接。

  1. 我从哪里开始阅读?

  2. 我如何记住(或解释)Connection 上的乌鸦脚表示公司拥有的 Connection 数量,反之亦然?

谢谢

erd database-diagrams relations

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

为博客构建数据库

我为博客建立了一个数据库。我还是学生,所以我在这方面的知识有限。我发布这个问题是为了简要描述我做错了什么,为什么以及如何解决它。我不是后端开发人员,所以如果你误解了这篇文章中的某些内容,我会进一步解释。

这是一个简单的博客项目。以下过程适用于管理员和用户。

行政

  • 在博客上注册为作者
  • 邮政
  • 写文章

用户

  • 查看帖子
  • 喜欢帖子
  • 发表评论
  • 喜欢评论

下面是我用于上述过程的表格:

  • author (持有博客的注册作者)
  • 帖子 (包含帖子所需的所有信息)
  • 评论 (保存评论所需的数据)
  • likes_counter (保存用户对帖子或评论的独特喜欢)

Authors 和 Posts 表关系

我使用一对多关系来连接作者帖子表。每个作者可以写多篇文章,而每篇文章只需要一个作者。

EER图如下:

博客的作者和帖子数据库图

这里是作者帖子表模式:

CREATE TABLE IF NOT EXISTS `authors` (
  `author_ID` bigint(10) unsigned NOT NULL AUTO_INCREMENT,
  `author_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `author_avatar` text COLLATE utf8_bin NOT NULL,
  `author_description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY …
Run Code Online (Sandbox Code Playgroud)

mysql database-design relations

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

根据不同表中的相关数据约束数据。这应该在数据库级别还是应用程序级别完成?

我正在开发一个数据库,其中包含我们的客户信息以及有关我们供应商的信息。其中一部分包括将我们的客户与我们的供应商匹配、这些供应商为我们的客户提供给我们的帐号以及我们向客户收取使用这些供应商服务的费用。

背景

在我现在处理的情况下,我有一个表格,其中包含我们客户的帐号、供应商 ID 和该供应商分配给我们客户的帐号。

我还有一个表格,其中包含我们所有供应商的信息和一个相关表格,其中列出了他们的所有服务以及该服务的“基本成本”。

问题

我遇到的问题是将客户与供应商的服务相关联。

如果我只是创建一个表,其中包含我们客户的帐号、供应商的服务 ID 和该服务的成本,那么我可能会遇到不提供该服务的供应商将服务分配给客户的问题。

这是我正在谈论的内容的图表(尽管很粗糙):

图表

因为 VendorServices 和 CustomerVendorServices 之间没有“检查”,所以我可能会在 CustomerVendorServices 表中 VendorServiceID 的位置插入一条记录,用于供应商不提供的服务。

这显然是一个问题,我可以通过与该数据库交互的应用程序的接口来防止它发生,但是如果有一种方法可以让数据库“检查”VendorServiceID 被插入到CustomerVendorServices 表匹配由与 VendorAccountsID/VendorAccountNumber 关联的供应商提供的服务。

我确信这不会令人困惑,如果有人试图理解它,老实说我会感到惊讶,但我想我会试一试。:)

任何帮助和/或建议将不胜感激。

database-design referential-integrity data-integrity relations

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

基于多对多数据透视表的唯一键

我必须管理艺术家和专辑表:

| artists      |  | albums       |  | album_artist |
+--------------+  +--------------+  +--------------+
| id           |  | id           |  | id           |
| artist       |  | album        |  | album_id     |
| created_at   |  | created_at   |  | artist_id    |
| updated_at   |  | updated_at   |  +--------------+
+--------------+  +--------------+
Run Code Online (Sandbox Code Playgroud)

请记住,这是一种多对多关系,我确实需要找到一种方法来使专辑-艺术家对唯一,因为专辑可能具有相同的名称但属于不同的艺术家(例如“Greatest Hits”) ” 2Pac 专辑和 Notorious BIG 的“Greatest Hits”)。

是否有已知的方法/模式来解决这个问题?

mysql database-design many-to-many relations

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

从具有多个关系的两个表中进行选择的最佳做法是什么?

我有两个表,结构如下: 在此处输入图片说明 并且正在使用以下查询选择数据:

SELECT
(SELECT Name FROM Management_EnumerableItem ME WHERE ME.ID = DN) DN,
(SELECT Name FROM Management_EnumerableItem ME WHERE ME.ID = PN) PN,
(SELECT Name FROM Management_EnumerableItem ME WHERE ME.ID = Winder) Winder,
(SELECT Name FROM Management_EnumerableItem ME WHERE ME.ID = CouplingType) CouplingType,
(SELECT Name FROM Management_EnumerableItem ME WHERE ME.ID = Type) Type,
(SELECT Name FROM Management_EnumerableItem ME WHERE ME.ID = ILayer) ILayer,
(SELECT Name FROM Management_EnumerableItem ME WHERE ME.ID = OLayer) OLayer
FROM Product_Coupling_Serial
Run Code Online (Sandbox Code Playgroud)

那么,像这样的选择(最快的方式)的最佳性能的最佳实践是什么?

performance sql-server best-practices select relations query-performance

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

坏循环依赖的定义是什么?

我一直在寻找一个很好的资源,其中循环依赖得到了很好的解释,不幸的是没有找到好的资源。因此,我试图确切地了解我应该避免哪种循环依赖。问题是我发现了一些以矛盾方式解释的资源。有人可以准确解释一下我们应该避免哪些类型的循环依赖(以及为什么)?

以这些关系为例:

在此处输入图片说明

来源

这里提到这种关系是不好的(我不明白为什么)。

但是,这里提到了相同的关系不是问题(并被描述为非循环):

Models <--------------------------- SuperSets
   ^                                    ^
   |                                    |
   |                                    |
Tasks  <---------------------------- Sets
Run Code Online (Sandbox Code Playgroud)

来源


另一个例子是这样的:

在此处输入图片说明

来源

我也不明白为什么这是一个循环关系?

在我看来,以前的所有关系都不是曲线(箭头方向不会回到同一点)。我认为我对循环依赖项的理解有问题。有人可以为我解释一下,特别是在前面的例子中吗?

database-design relations

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

数据库:一张表或多张

我正在做一个分类广告网站的项目。

我有 12 个主要类别,它们的项目是 142,例如车辆有汽车、踏板车、自行车等。手机 手机有手机、平板电脑、配件。

现在我应该使用几个表并使用 Json 吗?

或者我应该为每个项目创建单独的表格(142 个表格)?

目前,我已经决定使用 142 个表来避免关系和连接以及繁重的编码。

哪种方式是正确的或建议另一种方式。优缺点都有什么 ?我搜索了很多,但没有得到任何可以回答我的问题的东西。

replication database-design database-recommendation relations

3
推荐指数
2
解决办法
1171
查看次数

内连接可交换的证明

我试图向自己证明内部联接的顺序并不重要,但是,从抽象的意义上来说,我什么也没想到。

如何证明一组 INNER JOIN 的执行顺序(将多个表转换为单个表)不会影响结果集(即证明 INNER JOIN 操作的交换性和关联性)?

join relational-theory relations relational-algebra

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

为视图计数创建单独的表是一个好习惯吗?

我创建了一个blog表,其中有一个名为的字段views_count,但我听说更新views_count每个页面视图上的字段很麻烦。所以我现在创建了一个单独的视图计数表,如下所示:

views:
id,
blog_id,
ip_address,
counter
Run Code Online (Sandbox Code Playgroud)

现在我将独特的访问存储在views表中。当我在视图表中保存记录时,我也会更新blog字段views_count字段,那么这是一个好方法吗?或者有更好的选择吗?

完整创建架构:

CREATE TABLE `video_blog` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `category_id` int(11) UNSIGNED DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `sub_title` varchar(255) DEFAULT NULL,
  `slug` varchar(255) NOT NULL,
  `video_embed_code` text,
  `video_thumbnail` varchar(255) DEFAULT NULL,
  `video_thumbnail_alt` varchar(255) DEFAULT NULL,
  `description` text,
  `views` int(11) UNSIGNED NOT NULL,
  `is_active` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY …
Run Code Online (Sandbox Code Playgroud)

mysql database-design best-practices relations

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

频繁查询表或单独表中的LOB

我在 Microsoft SQL Server 2012 服务器中有一个名为 FinTrans 的表,在任何给定时间都有大约 10K-30K 条记录,每天插入和删除大约 2K 条记录。

该表有 3nvarchar(max)列,用于保存事务的可能错误消息(3 种不同类型的消息,因此是单独的列)。每当列出表的内容时,nvarchar(max)也会读取这些列。列是nvarchar(max)因为它们的内容可能会超过 4K,但是机会很小(也许每周有一个记录)。

在这种情况下,最好将此列存储在与 FinTrans 表具有 1:1 关系的单独表中,还是我应该将列留在原处?

sql-server sql-server-2012 blob relations

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