对于具有超过 15,000 个具有相同结构的数据库的环境,AutoClose ON 是否是一个糟糕的选择?
我知道我们应该在 99.99% 的情况下将此作为最佳实践。那么这是该功能适用的一种边缘情况吗?
在这样的情况下,我们应该注意什么并改进?
我有以下三个表:
products:
product_id,
product_name,
...
categories:
category_id,
category_name,
category_parent_id,
category_priority (for sort ordering),
.....
labels:
label_id,
label_name,
.....
Run Code Online (Sandbox Code Playgroud)
这个想法是,产品分配给一个类别将各内进行分组类别的标签,并以这种方式在网站上列出:
---label1---
product_1
product_2
product_3
---label2---
product_4
product_5
---label3---
product_6
product_7
product_8
product_9
etc.
Run Code Online (Sandbox Code Playgroud)
我不知道如何设计一个关联表(或多个表)将所有这些粘合在一起并防止这样的异常:
---label1---
product_1
product_2
---label2---
product_2
product_3
Run Code Online (Sandbox Code Playgroud)
同时,我想允许一种情况,即当没有足够的产品来证明其合理性时,不会为某个类别分配标签。
是否有可能设计一个将它结合在一起的结构,或者我应该“放弃所有希望”并采用这样的方法:
categories:
category_id,
category_name,
category_parent_id,
categor_is_label,
category_priority
products:
product_id,
product_name,
...
Run Code Online (Sandbox Code Playgroud)
加上下面的关联表:
categories_products:
category_id,
product_id,
priority
Run Code Online (Sandbox Code Playgroud)
并处理应用程序中的所有逻辑和异常检查?
我假设用户不能直接访问数据库。
对于那些有兴趣深入讨论手头业务背景的人,您可以访问此聊天室。
我正在使用 Postgres 9.5,我想弄清楚如何使用 JSON 数组更新 postgres 表。我希望数组中的每个对象都对应一个新行,每个键对应一个列,每个值都是要插入到该列中的数据。我试图用一个函数来做到这一点。这里的数据格式:
[
{ col1: a, col2: 5, col3: 1, col4: one},
{ col1: b, col2: 6, col3: 2, col4: two},
{ col1: c, col2: 7, col3: 3, col4: three},
{ col1: d, col2: 8, col3: 4, col4: four},
]
Run Code Online (Sandbox Code Playgroud)
这是我的预期输出:
col1 (varchar)| col2 (integer) | col3 (integer) | col4 (varchar)
-----------------+----------------+--------------------+------------------
a | 5 | 1 | one
b | 6 | 2 | two
c | 7 | 3 | three
d | …Run Code Online (Sandbox Code Playgroud) 根据我的经验,当您想要保存图像或视频等二进制数据时,Blob 类型是不错的选择,当您想要保存大字符串时,Text 类型是不错的选择。
今天我看到了维基百科数据库。有趣的是,wiki 使用中等 blob 类型来存储页面的 wikitext。
所以我想知道为什么 Wiki 更喜欢使用 Blob 类型而不是 Text?
谢谢
我决定使用可为空字段或 jsonb 来存储用户配置文件。最初,这将用于联系人:email和phone。我预计稍后可能会添加其他列,例如mobile和website。此外,可能还有其他不相关的字段,例如设置/首选项、保存的搜索等。
我已经决定我不想为此使用任何形式的键值存储(或任何涉及多对多关系的模式),除非有非常好的理由。
jsonb 的优点:
jsonb 的缺点:
还有什么要添加到这个优点/缺点列表中的吗?尽管我只想使用可为空的列,但我认为忽略 jsonb 是一种疏忽 - 这似乎是一个令人信服的选择。
可能我的设计是错误的,或者只是有更好的方法。我将使用一个非常简单的例子:
--------- dbo.Book----------
| |
| BookID int identity (1,1) |
| ShelfID int FK |--
---------------------------- |
|
--------- dbo.Row----------- |
| | |
--| RowID int identity (1,1) | |
| ---------------------------- |
| |
| -------- dbo.Shelf---------- |
| | | |
| | ShelfID int identity (1,1)|--
--| RowID int FK |
----------------------------
Run Code Online (Sandbox Code Playgroud)
足够简单。
但是如果我想分配一个没有架子的行怎么办?也许我们还知道行而不是货架:
--------- dbo.Book----------
| |
| BookID int identity (1,1) |
| RowID int FK | <-- New
| ShelfID int FK …Run Code Online (Sandbox Code Playgroud) foreign-key database-design sql-server referential-integrity
我正在尝试为记录事件的表格优化表格布局。
日志表包含三个相关的列:Timestamp, ItemId, LocationId
每行表示在给定的time,item已经在某个 看到了某个location。
2017-01-01 10:00 Item A has been seen at location 1
2017-01-01 10:01 Item A has been seen at location 1
2017-01-01 11:00 Item B has been seen at location 1
2017-01-01 11:01 Item B has been seen at location 2
2017-01-01 11:02 Item A has been seen at location 2
2017-01-01 11:03 Item B has been seen at location 1
Run Code Online (Sandbox Code Playgroud)
大约有 100 个不同的位置、每天 20.000 个新项目、每天一百万个事件和 14 天的日志。 …
performance database-design sql-server sql-server-2012 denormalization
假设我有一个 BankAccount 表和一个 BankAccountHistoryTransactions 表。
当涉及到 RDBMS 数据库模式设计时,大多数数据库设计人员会推荐以下内容:
BankAccount Table
int: BankAccountNumber Primary key
double: CashBalance
......
..
Run Code Online (Sandbox Code Playgroud)
此外,在 RDBMS 数据库设计中,BankAccountHistoryTransactions 表将类似于:
BankAccountHistoryTransactions Table
int: BankAccountHistoryTransactionsId Primary key
int: FK_BankAccountNumber Foreign key
DateTime2: DateOfTransaction
.................
.........
Run Code Online (Sandbox Code Playgroud)
在 NoSQL MongoDB 数据库模式中,它更像是一个包含嵌入式 BankAccountHistoryTransactions 集合的 BankAccount 集合:
db.BankAccount.find().pretty()
{
"_id" : ObjectId("51f7be1cd6189a56c399d3bf"),
"BankAccountNumber" : "7575785885859",
"CashBalance" : "890399",
....................................,
...............................,
.......................,
"BankAccountHistoryTransactions" : {
"_id" : ObjectId("51f7be1cd6189a56c399d3bf"),
"BankAccountHistoryTransactionsId": 1,
"DateOfTransaction" : ISODate("2019-12-31T23:00:00Z")
}
}
Run Code Online (Sandbox Code Playgroud)
我对 NoSQL MongoDB 数据库架构设计方法的问题是银行账户可能有大量的 BankAccountHistoryTransactions 条目(可能进入银行账户的数十万个 BankAccountHistoryTransactions 条目)。
因此,如果我们使用如下所示的伪外键关系会不会更好: …
我正在大学介绍数据库对象课程。
我与教授在如何解释 ERD 图中基数的鱼尾纹符号方面存在分歧。
示例:看看这张图片(我从演讲幻灯片中提取的一张图片):
根据我的解释,这表明:
但是,根据我导师的解释,这表明:
我一直无法找到任何证据来证明我自己对此的理解……但是,再说一次,我只是一个学生。也许我错过了什么?如果我是,我想弄清楚我哪里出错了。
我创建了一个导入 600,000 行 Excel 工作表的表格。我将运行的大多数查询都将使用C_CustomerID,它们将如下例所示:
select * from testtable where C_CustomerID = 12345678
Run Code Online (Sandbox Code Playgroud)
表定义为:
CREATE TABLE [dbo].[testtable](
[id_card] [int] IDENTITY(1,1) NOT NULL,
[C_CustomerID] [int] NOT NULL,
[C_AccountID] [nvarchar](255) NULL,
[C_ProductID] [varchar](20) NULL,
.......... more columns here ...
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
我创建了一个索引:
CREATE NONCLUSTERED INDEX [inx_profitability] ON [dbo].[testtable]
(
[C_CustomerID] ASC
)
Run Code Online (Sandbox Code Playgroud)
稍后我只会从 Excel 工作表导入更多记录。每 6 个月将导出约 500,000 条新记录。
一旦表变大,我可以做些什么来提高未来的性能?
我正在运行 SQL Server 2012 和 Microsoft SQL Server Management Studio 11.0.3128.0。
database-design ×10
sql-server ×4
foreign-key ×2
mysql ×2
postgresql ×2
schema ×2
erd ×1
index-tuning ×1
json ×1
many-to-many ×1
mariadb ×1
mongodb ×1
nosql ×1
null ×1
performance ×1
primary-key ×1
rdbms ×1