我正在为汽车分类开发一个数据库。我不确定如何设计它的最佳方式。汽车有几个特点,比如它有 2 个或 4 个门,如果它是 4x4 或 4x2,发动机容量为 1.6 或 2.0。
所有这些功能都是汽车特有的,但它们必须仅限于该型号所具有的功能。因此,例如,如果有人发布自行车,则不会在 4x4 或该型号以外的引擎的下拉列表中显示该选项。
我不想让这个通用。它只会用于汽车,因此没有必要考虑如何最好地用于通用分类广告。
设计这个的最佳方法是什么?
更多信息:
我的问题是如何设计汽车模型和实际汽车之间的关系。例如,模特年可以从 1990 年到 2000 年。当有人要添加该型号的汽车时,我只希望他们能够从该型号的选项中进行选择。如何将其存储在数据库中?
我有一个带字段的表
Hour,
PathId,
Duration,
Event,
CellId,
Channel
Run Code Online (Sandbox Code Playgroud)
我有 50 多个 CellId。每个 CellId 有四个 PathId(即 0、1、2、3)。每个 PathId 都有许多事件和持续时间。现在我想显示每个 CellId 的前 10 条记录(每个 PathId)。
样品表

样本输出

假设我有一个用于博客文章posts、 和架构的表
id
author
title
content
Run Code Online (Sandbox Code Playgroud)
每个都post可以属于一些categories
id
name
descrtiption
Run Code Online (Sandbox Code Playgroud)
所以一篇博文可以属于多个类别。
显然titleand contentin posts、 andname和descriptionincategories可以翻译成不同的语言。
那么,考虑到现有的 db 模式设计,扩展对多语言应用程序的支持的最有效和最合理的方法是什么?
我目前正在研究一个测验系统,并试图首先进行数据库设计。我已经阅读了一些关于不同测验的主题,但它们在某些部分都是独一无二的。
系统将使用带有 PHP 的 MySQL 数据库。
这个测验系统的目标:
到目前为止的数据库设计图像。我已经在每个“关系”上写了这个字段。
我很确定其中的大部分内容都是不言自明的,但我已经对不太明显的内容添加了注释。
至少在一开始它不会是任何“现场”比赛。更有可能的是,您进行测验,获得时间,然后您可以将链接发送给朋友并参加比赛。但我还在考虑那部分。
我意识到,与将所有内容放在一两个表格中的基本测验设计相比,使用此设计获得完整结果等需要更多的工作。但是我尝试将它分成不同的表,以便能够更好地扩展它并使其更复杂以备后用。
我正在考虑添加某种支持,以便一个问题也可以用于不同的测验。只是在想我应该如何做到最好。
这其中的一个关键功能还在于能够快速加载所有内容。
欢迎任何提示!
wp_quiz(这里我们存储所有不同的测验)
wp_quiz_questions
wp_quiz_question_answers
wp_quiz_participants
wp_quiz_participant_answers
通常,SQL Server 会在更新期间获取锁。它还支持锁升级:
锁升级是将许多细粒度锁转换为较少粗粒度锁的过程,减少系统开销的同时增加并发争用的概率。
在事务 ROLLBACK 期间,SQL Server 是否会降级锁,放回细粒度锁?
请向我解释这种行为。
此 SQL 查找 ids (type is array::bigint) 为空的元素。
SELECT * FROM rises WHERE ids = '{}'
-- finds, e.g., 9 rows
Run Code Online (Sandbox Code Playgroud)
此 SQL 未找到任何行:
SELECT * FROM rises WHERE array_length(ids, 1) = 0
--finds always 0 rows
Run Code Online (Sandbox Code Playgroud)
但是这个 SQL 可以找到非空数组
SELECT * FROM rises WHERE array_length(ids, 1) > 0
--finds, e.g., 15 rows
Run Code Online (Sandbox Code Playgroud)
初始化:
CREATE TABLE rises(
id bigserial,
d1 bigint DEFAULT 0,
ids bigint[] DEFAULT '{}',
PRIMARY KEY (id));
Run Code Online (Sandbox Code Playgroud)
为什么array_length可以找到非空数组,但对空数组不起作用?
我发现在使用 Windows 身份验证连接到远程 SQL Server 或其他域时我们有两个选择:
但是Windows身份验证不就意味着登录Windows的用户拥有使用SQL Server的身份验证吗?
因此,由于我不是远程服务器中的授权登录名或用户,我的意思是我不是他们计算机上的 Windows 用户,我如何连接到他们的服务器?
这样每个知道我的域名和实例名的人都可以连接到我的机器。
安全性怎么样?我们是否必须添加其他 Windows 用户或计算机才能连接到我们的 SQL Server?
我相信我们必须将其他计算机添加到我们的域中,或者我们必须将其他域添加到我们的域中受信任。
请帮忙; 我错过了什么?
我正在用 PHP 编写一个简单的 API,并使用 MySQL 作为 Web 应用程序的数据库。我打算CREATE TABLE IF NOT EXIST在每个 API 调用中放入所有表。
我预计会有 5-6 张桌子。
我尝试这样做的原因很简单:我不需要运行任何额外的脚本来初始化应用程序 - 它会在第一次运行时自动执行。
作为一个缺点,我预计这会减慢 API 操作的速度。然而,我尝试记录 API 调用,但仍然是 2-3 毫秒(在我的例子中,如果有 CREATE TABLE 或没有 CREATE TABLE,我没有注意到任何差异)。
有什么想法吗?
我们的客户已同意一天数据丢失的 RPO。所以我将改变备份策略以消除空间限制。
数据库处于完全恢复模式。
现有的备份计划:-
想改变如下: -
这将避免我的空间限制。
如果我们备份事务日志,那么 RTO 会不会更大,因为我们每天只备份一个事务?
无论如何,我们需要执行事务日志备份以在日志文件中腾出空间。
那么你能建议哪种备份类型会更好,差异或事务日志?
如果我走错了方向,请根据我的 RPO 建议一个备份策略。
谢谢。
我有一个看起来像这样的层次结构:
作为 TSQL 中的 JSON,它是这样的:
declare @Employees nvarchar(max) =
'{
"person": "Amy",
"staff": [
{ "person": "Bill" },
{
"person": "Chris",
"staff": [
{ "person": "Dan" },
{ "person": "Emma" }
]
}
]
}';
Run Code Online (Sandbox Code Playgroud)
这只是一个例子。实际数据可以是任何深度或广度不确定的树。
我发现的文档和所有示例都显示了自上而下的遍历。每个 JSON 路径都从根节点开始,并通过已知的节点名称导航到所需的节点。我没有发现从层次结构中的不确定深度开始并向上工作。我觉得我需要像传递闭包这样的东西。
给定一个名字,我想获得该名字的血统。例如,给定“Emma”,结果将是“Emma / Chris / Amy”。给定“比尔”,答案将是“比尔/艾米”。输出格式不重要;它可以是 JSON、字符串或结果集。名字是独一无二的。
这是对我自己的学习练习。只要它仍然是 JSONy,就可以将原始 JSON 表示更改为任何等效的内容。层次结构的邻接列表表示上的 JSON_QUERY 无法实现我的目标。
sql-server ×5
mysql ×2
t-sql ×2
array ×1
backup ×1
innodb ×1
json ×1
locking ×1
performance ×1
php ×1
postgresql ×1
restore ×1
rollback ×1
schema ×1