这个问题是关于 NULL 的正确使用和对业务逻辑与存储过程的 CHECK 约束的使用。
我有以下表格设置。

我对表进行了标准化以避免使用 NULL。问题是这些表中的一些由于业务流程而相互依赖。有些设备必须经过消毒,有些设备在另一个系统中进行跟踪。所有设备最终都将在处置表中处置。
问题是我需要执行检查,例如如果布尔字段RequiresSantization为真,则在DisposalDate输入Sanitize字段之前无法输入。
此外,如果布尔值为IsTrackedInOther真,则OfficialOutOfService必须先输入字段,然后DisposalDate才能输入。
如果我将所有这些列合并到Archive.Device表中,那么我将拥有 NULL 字段,但我将能够使用 CHECK 约束管理所有业务规则。
另一种方法是让表保持原样,并通过从表中选择以检查记录是否存在,然后抛出适当的错误来管理存储过程中的业务逻辑。
这是可以适当使用 NULL 的情况吗?布尔领域IsTrackedInOther
和RequiresSanitization基本赋予意义的NULL字段。如果IsTrackedInOther是,false则设备未在其他系统中跟踪SectionID并且SpecialDeviceCode为 NULL,我知道它们应该为 NULL,因为它未在其他系统中跟踪。同样,OfficialOutOfServiceDate和OOSLogPath我知道会是NULL藏汉,并且DisposalDate可以随时进入。
如果IsTrackedInOther是true,那么SectionID和SpecialDeviceCode将是必需的,如果OfficialOutOfServiceDate和OOSLogPath是NULL,那么我知道它们还没有被正式从该系统中删除,因此DisposalDate在输入它们之前不能有a 。
所以这是一个问题
单独的表/无 NULL/在存储过程中强制执行规则
对比
在 CHECK 约束中组合表/NULLs/强制规则。
我知道在图片中使用 NULL …
以下是一些蛋白质相互作用数据库:
http://dip.doe-mbi.ucla.edu/dip/Main.cgi
作为新手,在使用大约 20,000 个蛋白质的数据集尝试任何此类项目之前,我必须了解数据库的哪些实际方面?作为管理员,我在设计和实施这样一个项目的过程中会遇到什么困难?
看这张表:
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 只能存在一次,因此不允许重复。我怎么做?在它们之间创建索引?
提前干杯和感谢
我有一个预订系统的设计数据库。预订系统要求如下:
我在设计表格时面临的问题是有 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 个固定行的表。由于行太多,设计将难以管理。
该表将类似于以下内容:
+------------------------------------------------- ---------------------+ | 身份证 | 周 | 时间 | 地点 | 用户 | 状态 | …
我的项目是为许多国家设计一个医学数据库。
该数据库包含许多部分:每个国家都有自己的语言的药品、医疗中心、患者等。
我从医学部分开始我的设计,但我有很多问题仍在继续:
我上传了 2 张图片,用于药物部分的初始设计,仅限英文。
注意:这两张照片只是一张,但太大了所以我把它分成了两半
我使用 SQL Server 2008。

我是一名初学者数据库设计师,想知道是否有人可以帮助我理解这一点。假设我们要设计一个系统,其中包含一个名为 Vehicle 的实体和另一个名为 Service 的实体。服务是维修/维护。
您如何看待以下关系的基数:
从汽车端来看,最小基数应该是 0 还是 1?
此外,服务涉及零件、人工和消耗品。
你会如何建模?作为一个独立的实体?或者在服务实体或汽车和服务之间的关系(交叉实体)的一部分?
我无法访问分区功能,但考虑一个支持工单系统,每天打开数万张工单,解决问题需要大约一周到几个月的时间。显然,如果我从一开始就试图将它们全部放在一张桌子上,那么这张桌子就会变得很大。
我的问题是:
UNION 每次寻求未解决的查询时执行某种操作?这可能是一个有点宽泛的问题,但是......我目前面临以下困境:
拥有一个 Web 应用程序(已部署)和一个新的移动应用程序,我目前正在研究服务器端的移动应用程序数据库,我的问题是...您认为为 Web 和应用程序设置单独的数据库会更好吗? ,还是将它们整合为一个更好?
我可以想到每种方法的利弊。例如,单个数据库更容易更新和维护。但是,将它们分开为每个应用程序提供了某种独立性,例如,如果需要,您可以更改其中任何一个的 DBMS...
我知道在不了解数据库设计、上下文等的情况下做出回应有点困难,但您的总体想法是什么?“大公司”通常做什么?
编辑:另外,例如,如果我们想在未来扩展移动应用程序并将其迁移到另一台服务器......在之前的任何场景中都会更难吗?
我所说的元数据是指诸如:
据我所知,这只是数据。我可以通过给一个实体表一个用户表的外键来实现实体所有权;我可能会将所有文本字段存储为两个字段:内容和格式。等等...
就实际的数据库设计而言,数据和元数据之间有什么区别吗?为什么我可能想将元数据存储在数据库以外的地方?
我们有几个表的问题,这些表非常大,会减慢系统速度。所以我的问题是,对于表中的行数来说,这个大小是否正常,以及可以做些什么来使它更小更轻,它不应该减慢一切。


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) database-design ×10
constraint ×2
archive ×1
erd ×1
metadata ×1
mysql ×1
mysql-5.5 ×1
null ×1
oracle ×1
oracle-11g ×1
sql-server ×1