标签: database-design

正确使用 NULL,并利用业务逻辑与存储过程的 CHECK 约束

这个问题是关于 NULL 的正确使用和对业务逻辑与存储过程的 CHECK 约束的使用。

我有以下表格设置。

实体关系图

我对表进行了标准化以避免使用 NULL。问题是这些表中的一些由于业务流程而相互依赖。有些设备必须经过消毒,有些设备在另一个系统中进行跟踪。所有设备最终都将在处置表中处置。

问题是我需要执行检查,例如如果布尔字段RequiresSantization为真,则在DisposalDate输入Sanitize字段之前无法输入。

此外,如果布尔值为IsTrackedInOther真,则OfficialOutOfService必须先输入字段,然后DisposalDate才能输入。

如果我将所有这些列合并到Archive.Device表中,那么我将拥有 NULL 字段,但我将能够使用 CHECK 约束管理所有业务规则。

另一种方法是让表保持原样,并通过从表中选择以检查记录是否存在,然后抛出适当的错误来管理存储过程中的业务逻辑。

这是可以适当使用 NULL 的情况吗?布尔领域IsTrackedInOtherRequiresSanitization基本赋予意义的NULL字段。如果IsTrackedInOther是,false则设备未在其他系统中跟踪SectionID并且SpecialDeviceCode为 NULL,我知道它们应该为 NULL,因为它未在其他系统中跟踪。同样,OfficialOutOfServiceDateOOSLogPath我知道会是NULL藏汉,并且DisposalDate可以随时进入。

如果IsTrackedInOthertrue,那么SectionIDSpecialDeviceCode将是必需的,如果OfficialOutOfServiceDateOOSLogPath是NULL,那么我知道它们还没有被正式从该系统中删除,因此DisposalDate在输入它们之前不能有a 。

所以这是一个问题

单独的表/无 NULL/在存储过程中强制执行规则

对比

在 CHECK 约束中组合表/NULLs/强制规则。

我知道在图片中使用 NULL …

null database-design constraint stored-procedures

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

制作蛋白质相互作用数据库的实际障碍是什么?

以下是一些蛋白质相互作用数据库:

http://string-db.org/

http://dip.doe-mbi.ucla.edu/dip/Main.cgi

作为新手,在使用大约 20,000 个蛋白质的数据集尝试任何此类项目之前,我必须了解数据库的哪些实际方面?作为管理员,我在设计和实施这样一个项目的过程中会遇到什么困难?

database-design

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

如何设置唯一的列组合

看这张表:

    CREATE TABLE IF NOT EXISTS `default_messages_users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `message_id` int(11) NOT NULL,
  `owner_user_id` int(11) NOT NULL,
  `to_user_id` mediumint(8) NOT NULL
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)

我只需要设置 message_id、owner_user_id、to_user_id 列的一种可能组合,这意味着组合(例如)1,1,1 只能存在一次,因此不允许重复。我怎么做?在它们之间创建索引?

提前干杯和感谢

mysql database-design constraint mysql-5.5

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

您将如何为预订系统设计一张桌子?

我有一个预订系统的设计数据库。预订系统要求如下:

  1. 预订系统允许用户预订周一至周五上午 8 点至下午 1 点之间的时间段(1 小时)。
  2. 用户可以为该 1 小时时段预订场地。
  3. 预订系统每年开放13周,然后休息13周,再开放13周,休息13周。

我在设计表格时面临的问题是有 3 个重要的控制变量 - 时间段、场地和 13 周。

我通过有一个包含固定行数的表格来起草设计。(因此,对于上午 8 点到下午 1 点,将有 5 个插槽,因此每周将有 25 个插槽。假设有 3 个场地,那么我将有 25 个插槽 x 3 个场地,这给了我 75 行。然后我乘以 75 至 26 周,因为系统将打开两个 13 周。因此,这将给我 1950 个固定行。

但是,问题是如果我通过在晚上 10 点结束来增加小时数,那么我每天将有 14 个时段,这意味着每周将有 70 个时段。如果场地增加到 10 个场地,那么,我将有 70 个插槽 x 10 个场地,这给我 700 排。当然,乘以 26 周,我将需要一个包含 18,200 个固定行的表。由于行太多,设计将难以管理。

该表将类似于以下内容:

+------------------------------------------------- ---------------------+
| 身份证 | 周 | 时间 | 地点 | 用户 | 状态 | …

sql-server-2008 database-design

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

多语言医学数据库的帮助?

我的项目是为许多国家设计一个医学数据库。

该数据库包含许多部分:每个国家都有自己的语言的药品、医疗中心、患者等。

我从医学部分开始我的设计,但我有很多问题仍在继续:

  • 如何将所有这些复杂的部分放在一个不同语言的数据库中?我无法想象任何适合这个复杂想法的设计。
  • 我如何应对来自每个国家的每个部分的数据快速增长带来的数据库增长?
  • 我阅读了有关主文件和辅助文件以及它们如何提高数据库性能的信息。我应该为我的数据库制作它们吗?还是应该使用默认文件?
  • 我应该在单独的数据库中将每个国家与自己的部分分开吗?

我上传了 2 张图片,用于药物部分的初始设计,仅限英文。

注意:这两张照片只是一张,但太大了所以我把它分成了两半

我使用 SQL Server 2008。

第1部分 第2部分

database-design sql-server

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

如何在有关汽车服务场景的实体关系图中对实体进行建模?

我是一名初学者数据库设计师,想知道是否有人可以帮助我理解这一点。假设我们要设计一个系统,其中包含一个名为 Vehicle 的实体和另一个名为 Service 的实体。服务是维修/维护。

您如何看待以下关系的基数:

  • 一辆车可以维修多次。
  • 一项服务是为一辆车。

从汽车端来看,最小基数应该是 0 还是 1?

此外,服务涉及零件、人工和消耗品。

你会如何建模?作为一个独立的实体?或者在服务实体或汽车和服务之间的关系(交叉实体)的一部分?

erd database-design

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

支持票务系统 - 何时/如何移动旧票?

我无法访问分区功能,但考虑一个支持工单系统,每天打开数万张工单,解决问题需要大约一周到几个月的时间。显然,如果我从一开始就试图将它们全部放在一张桌子上,那么这张桌子就会变得很大。

我的问题是:

  1. 一旦票得到解决,我是否应该将其移出原始表?或者
  2. 我是否应该在 90 个月后将已解决的票从原始表中移出?或者
  3. 我是否应该在 90 个月后将所有已解决或未解决的内容移动到另一个表中,并在UNION 每次寻求未解决的查询执行某种操作?

oracle database-design oracle-11g archive

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

数据库设计决策 - 移动和网络

这可能是一个有点宽泛的问题,但是......我目前面临以下困境:

拥有一个 Web 应用程序(已部署)和一个新的移动应用程序,我目前正在研究服务器端的移动应用程序数据库,我的问题是...您认为为 Web 和应用程序设置单独的数据库会更好吗? ,还是将它们整合为一个更好?

我可以想到每种方法的利弊。例如,单个数据库更容易更新和维护。但是,将它们分开为每个应用程序提供了某种独立性,例如,如果需要,您可以更改其中任何一个的 DBMS...

我知道在不了解数据库设计、上下文等的情况下做出回应有点困难,但您的总体想法是什么?“大公司”通常做什么?

编辑:另外,例如,如果我们想在未来扩展移动应用程序并将其迁移到另一台服务器......在之前的任何场景中都会更难吗?

database-design

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

元数据不应该成为我的数据库架构的一部分有什么原因吗?

我所说的元数据是指诸如:

  • 实体的所有者
  • 与实体关联的权限
  • 数据输入的日期和时间
  • 输入数据的保证
  • 文本属性的格式
  • 属性的描述性名称

据我所知,这只是数据。我可以通过给一个实体表一个用户表的外键来实现实体所有权;我可能会将所有文本字段存储为两个字段:内容和格式。等等...

就实际的数据库设计而言,数据和元数据之间有什么区别吗?为什么我可能想将元数据存储在数据库以外的地方?

database-design metadata

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

如何处理大桌子

我们有几个表的问题,这些表非常大,会减慢系统速度。所以我的问题是,对于表中的行数来说,这个大小是否正常,以及可以做些什么来使它更小更轻,它不应该减慢一切。

在此处输入图片说明在此处输入图片说明

CREATE TABLE [dbo].[TransactionEntry](
    [TransactionEntryID] [uniqueidentifier] NOT NULL,
    [TransactionID] [uniqueidentifier] NULL,
    [ItemStoreID] [uniqueidentifier] NULL,
    [Sort] [int] NULL,
    [TransactionEntryType] [int] NOT NULL,
    [Taxable] [bit] NULL,
    [Qty] [decimal](19, 3) NULL,
    [UOMPrice] [money] NULL,
    [UOMType] [money] NULL,
    [UOMQty] [decimal](19, 3) NULL,
    [Total] [money] NULL,
    [RegUnitPrice] [money] NULL,
    [DiscountPerc] [decimal](19, 3) NULL,
    [DiscountAmount] [money] NULL,
    [SaleCode] [nvarchar](50) NULL,
    [PriceExplanation] [nvarchar](50) NULL,
    [ParentTransactionEntry] [uniqueidentifier] NULL,
    [AVGCost] [money] NULL,
    [Cost] [money] NULL,
    [ReturnReason] [int] NULL,
    [Note] [nvarchar](50) NULL,
    [DepartmentID] [uniqueidentifier] NULL,
    [DiscountOnTotal] [decimal](19, 3) NULL,
    [Status] …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 database-design database-size

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