标签: table

三元关系:单表和多表有什么区别?

考虑以下三元关系: 三元关系

假设所有实体只有两个属性(PK 和 Name)。


以下是我导出的表格(5 个表格):

Sector
-------------------------
ID_Sector    SectorName
-------------------------

Product
-------------------------
ID_Product    ProductName
-------------------------

Company
--------------------------------------
ID_Company    ID_Sector    CompanyName
--------------------------------------

Relationship 1 (R1)
-------------------------
ID_Sector    ID_Product
-------------------------

Relationship 2 (R2)
-------------------------
ID_Company    ID_Product
-------------------------
Run Code Online (Sandbox Code Playgroud)

题:

对于这种三元关系,这是一个很好的解决方案吗?有 2 个表(R1 和 R2)而不是下面的单个表有什么区别:

Ternary table
-------------------------------------
ID_Sector    ID_Company    ID_Product    
-------------------------------------
Run Code Online (Sandbox Code Playgroud)

对我来说,与使用单个表相比,为每个关系(R1 和 R2)使用 2 个单独的表似乎是一个更好的解决方案,但我不知道这是否真的如此,或者这是否是一个好的做法。

erd database-design database-diagrams table

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

如何根据查找表检索最接近的值?

我正在尝试创建一个查询,该查询将从一个表中找到最接近的值并将其 ID 返回到结果表中。

下面是一个应该更好地描述情况的例子。

样本数据

这两个表将存在于 SQL 数据库中。

主表

+----+-------------+
| ID | Measurement |
+----+-------------+
|  1 | 0.24        |
|  2 | 0.5         |
|  3 | 0.14        |
|  4 | 0.68        |
+----+-------------+
Run Code Online (Sandbox Code Playgroud)

查找表

+----+---------------+
| ID | Nominal Value |
+----+---------------+
|  1 | 0.1           |
|  2 | 0.2           |
|  3 | 0.3           |
|  4 | 0.4           |
|  5 | 0.5           |
|  6 | 0.6           |
|  7 | 0.7 …
Run Code Online (Sandbox Code Playgroud)

table

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

在一对一的关系中,外键应该放在哪里?

我目前正在为项目管理系统设计 ERD。我无法在两个可行的解决方案之间进行选择作为最佳解决方案,因为我希望采用最佳标准。

可以访问系统的两个实体是客户和员工。由于它们具有不同的信息,我决定将它们视为不同的实体。我认为最好为系统用户使用一个表,而不是在客户和员工的两个表中都找到用户名和密码字段。另外,我必须遵循的限制:

  • 所有用户仅限于员工和客户。
  • 但并非所有员工都必须成为系统的用户。

以下是尚未定义关系的以下实体:

实体

现在,用户与客户、员工与用户之间只有一对一的关系。我的问题是我应该在哪里放置外键?我是否应该在用户表中放置两个外键,即employee_id 和 client_id,这样可以更轻松地从用户实体中找到关联的客户和员工实体,并且可以更轻松地定义授权规则?或者我是否应该将每个外键放在引用用户表的客户和员工身上,因为我不确定在一个表中包含两个外键且一次只能使用一个外键的做法是否可以接受。

erd database-design table

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

在 PostgreSQL 中使用 WHERE 子句执行 TABLESAMPLE

我想使用 TABLESAMPLE 从 PostgreSQL 满足特定条件的行中随机采样。

这运行良好:

select * from customers tablesample bernoulli (1);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将条件嵌入脚本中。例如这个

select * from customers where last_name = 'powell' tablesample bernoulli (1);
Run Code Online (Sandbox Code Playgroud)

抛出这个错误:

SQL 错误 [42601]:错误:“tablesample”位置或附近的语法错误
:71

postgresql query random table where

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

列名或提供的值数量与表定义不匹配错误

我有一个表,在该表的两列上定义了两个外键。问题是,当我从 SQL Server 插入值时,出现以下错误:

列名或提供的值数量与表定义不匹配

请参阅下图以了解表的定义。你能告诉我为什么没有插入值吗?

表格图片

foreign-key sql-server table

6
推荐指数
1
解决办法
8万
查看次数

如何组织数据库进行翻译、性能?

我正在为一个国际网站做一个新项目。任务是提供 16 种语言版本。

在数据库结构上,我想知道这两种方法之间是否有任何性能优势或劣势。什么是首选,为什么?

方法#1

每个翻译项目一行

方法#2

每个项目每种语言一行

database-design table

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

Postgres - 复制表 INCLUDING CONSTRAINT 不包含约束

如果我明确要求,该语句为什么不复制约束?

CREATE TABLE backup_schema.permissions (LIKE public.permissions INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING STORAGE INCLUDING COMMENTS);
INSERT INTO backup_schema.permissions
    SELECT *
    FROM public.permissions
    WHERE community_id=123;
Run Code Online (Sandbox Code Playgroud)

使用 pgadmin3 验证我发现新表(例如:backup_schema)的约束是: 在此输入图像描述

但在公共模式的原始表中是这样的: 在此输入图像描述

postgresql constraint postgresql-9.1 table

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

错误 1146 (42S02):表 'db.tablename' 不存在

我有两个数据库,当我提示 SHOW DATABASES 时,我可以看到一个数据库列表,包括 mysql、performance_schema 和 informations_schema。我可以在它们两个上提示“SELECT DATABASE_NAME”,我可以在它们两个上提示“SHOW TABLES”,但是当我尝试查询时,我得到了这个问题标题中提到的错误。我使用 MySQL 5.7.7,并且 InnoDB 设置为 FILE_PER_TABLE。所有文件都在正确的文件夹中,包括 ibdata1 和两个日志文件。

有没有人有解决方案?

mysql errors table

6
推荐指数
1
解决办法
11万
查看次数

关系 {table_name} 的列 {table_name} 不存在 SQL 状态:42703

使用指定的表名和列名运行更新查询时出现错误:

UPDATE Temp SET Temp.Id='234',Temp.Name='Test'WHERE Id='245'
Run Code Online (Sandbox Code Playgroud)

这是错误:

ERROR:  column "temp" of relation "temp" does not exist
LINE 1:      UPDATE Temp SET Temp.Id='23...
                               ^
********** Error **********

ERROR: column "temp" of relation "temp" does not exist
SQL state: 42703
Character: 24
Run Code Online (Sandbox Code Playgroud)

postgresql update table

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

从内存中读取数据后,什么时候从内存中删除(基于磁盘的)表?

(基于磁盘,所以没有 Hekaton)表在内存中的持久化时间是否超过从它们读取数据的查询的生命周期?

如果是这样,是什么决定了它们在内存中停留的时间?

有没有办法管理它们在内存中持续多长时间?

sql-server memory table buffer-pool

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