小编Mik*_*ll'的帖子

同一数据库中的多家公司

我正在研究一个系统的开发,该系统认为每个"公司"都有自己的"用户"和他们自己的"账单",我怀疑是因为知道场景在性能和管理方面更好.处理同一数据库中的所有公司并将所有内容链接到idempresa?o每个客户的数据库?

我想知道你对此的看法,非常感谢你

database architecture database-design multi-tenant

4
推荐指数
1
解决办法
2577
查看次数

复合键中的MySQL列顺序

我怀疑,这是我的表:

mysql> show create table watchdog\G
*************************** 1. row ***************************
   Table: watchdog
   Create Table: CREATE TABLE `watchdog` (
       `index1` int(11) NOT NULL DEFAULT '0',
       `index2` int(11) NOT NULL DEFAULT '0',
       `dog` int(11) NOT NULL DEFAULT '9',
        PRIMARY KEY (`index1`,`index2`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

<1>首先查询:

select index1, index2 
from watchdog 
where index1 > 4000008 and index1 < 4200007; 
Run Code Online (Sandbox Code Playgroud)

结果:

 ...
| 4200001 | 4200002 |
| 4200002 | 4200003 |
| 4200003 | 4200004 | …

mysql key composite

4
推荐指数
1
解决办法
2320
查看次数

如何隔离不同客户的SQL数据?

我目前正在使用 WCF 为应用程序开发服务。我想在 windows-azure 上托管这些数据,它应该托管来自不同用户的数据。我正在寻找正确的数据库设计。在我看来,只有两种不同的可能性:

  • 为每个客户创建一个新数据库
  • 将客户 ID 存储到每个表(或当每个表通过实体连接时为主表)

第一种方法具有非常好的速度和隔离性,但它在 Windows azure 上非常广泛(或者我对azure 定价的理解有误吗?)。另外,我不知道如何以这种方式配置 WCF 服务,它总是使用另一个数据库。

第二种方法速度慢且隔离性差。但它很容易实施并且更便宜。

现在我的问题是:是否有其他方法可以实现数据的高度隔离并使用 azure 轻松集成到 WCF 服务中?我应该使用什么设计以及为什么?

sql sql-server wcf azure multi-tenant

3
推荐指数
1
解决办法
891
查看次数

多租户数据库设计 - 每个用户的数据库

我正在开发一个Web应用程序,它要求用户拥有自己的一组私有数据.我最初的计划是创建一个商店表,一个用户表和一个user_stores交叉表.然后,我会在stores表中保存该存储的数据库名称(并使用应用程序用户和密码创建每个特定于商店的数据库,以便Web应用程序始终可以登录).

每个商店都有类似的数据(用户,产品,运输方法等),我知道我可以使用外键引用将所有内容绑定在一个巨大的数据库中.但是,由于数据是非常具体的并且可能是专有的,使用我的原始设计或者在其中创建包含每个人数据的单个数据库会更好吗?

我正在考虑扩展问题,单独的数据库会更好,因为我们可以将更活跃的帐户放在他们自己(或更强大的)数据库服务器上,如果需要,只需在stores表中添加服务器位置字段.此外,它可能更安全,因为我们可以将用户登录信息添加到数据库,只允许他们访问他们的数据(阻止一个用户编辑其他用户的东西).我的问题是,是否有我担心的问题?几乎每一篇我读过的帖子都说没有使用我想到的方法,而且我不是DBA.任何输入都会有所帮助.

附加信息:这将托管在我将具有root访问权限的专用服务器上.我可以根据需要创建尽可能多的MySQL数据库.

mysql database-design multi-tenant

3
推荐指数
1
解决办法
5663
查看次数

如何将浮点值存储在nvarchar列中时按数字顺序对其进行排序?

这些是我运行的查询的结果:

10
10.5
11
11.5
12
12.5
13
5
5.5
6
6.5
7
7.5
8
9.5
8.5
9
Run Code Online (Sandbox Code Playgroud)

Column的数据类型是nvarchar.

我如何通过结果订购?

我尝试过Order by asc,desc但什么也没做.

sql sql-server

3
推荐指数
1
解决办法
4303
查看次数

数据库规范化在一个非常简单的数据库中有多重要?

我正在创建一个非常简单的数据库(mysql),基本上有两种类型的数据,总是具有1对1的关系:

活动

  • 赞助
  • 时间(可选)
  • 位置(城市,州)
  • 场地(可选)
  • 详细信息URL

赞助商

  • 名称
  • 网址


城市将经常被复制,但是为这样一个简单的数据库模式建立城市表真的很有价值吗?

通过屏幕抓取网站来填充数据库.在这个网站上,城市字段通过从下拉列表中选择来填充,因此不会出现错误类型等,并且可以很容易地将记录与城市表进行匹配.即使我的数据库用户经常按城市搜索,我也不确定会有多大意义.

mysql database database-design database-normalization

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

使用带有子选择的更新的 PostgreSQL 记录重新排序

我在 SQL Server 论坛上找到了有关如何对表中的记录重新排序的解决方案。

UPDATE SomeTable
SET rankcol = SubQuery.Sort_Order
FROM
    (
    SELECT IDCol, Row_Number() OVER (ORDER BY ValueCOL) as SORT_ORDER
    FROM SomeTable
    ) SubQuery
INNER JOIN SomeTable ON
SubQuery.IDCol = SomeTable.IDCol
Run Code Online (Sandbox Code Playgroud)

当我尝试在 PostgreSQL 上做同样的事情时,我收到一条错误消息 -

错误:多次指定表名“sometable”

任何帮助将不胜感激。

谢谢!

postgresql

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

像我五岁一样解释 - >主键如何满足第一范式

提前感谢您的知识.我正在攻读微软技术考试,其中一个练习题是:

创建主键满足第一个普通表单.对或错?

我个人认为它是假的,因为第一个正常形式是摆脱重复的组.但是文中有一句话(数据库基础,微软出版社考试98-364),其中说明如下:

"第一个规范化形式(1NF)表示数据采用实体格式,这基本上意味着必须满足以下三个条件:•表格必须没有重复记录.一旦为表格定义了主键,就可以了已达到第一个标准化形式标准."

请帮助我理解这一点,请解释,就像我五岁.谢谢.

database database-design database-normalization

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

去pq和Postgres适当的错误处理约束

我当前正在使用pqGo 的lib与我的PostgreSQL数据库进行通信。事实证明,错误检查比预期的要困难一些。描述我的问题的最简单方法是通过一个示例场景。

想象一个网络表单:

Username  ________
Email     ________
Voucher   ________
Password  ________
Run Code Online (Sandbox Code Playgroud)

粗略的模式:

username VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
voucher VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
Run Code Online (Sandbox Code Playgroud)

现在忽略假定的纯文本密码。如果有人提交表格,我可以进行所有验证以验证约束,例如长度/允许的字符/等。

现在将其放入数据库中,因此我们编写一个准备好的语句并执行它。如果验证正确完成,唯一会出错的就是UNIQUE约束。如果有人尝试输入现有的用户名,则数据库/ sql将回发错误。

我的问题是我不知道如何处理该错误并从(应该是)可恢复的错误中恢复。pq 为此提供了一些支持,但是返回的内容似乎仍然模棱两可。

我可以看到两个解决方案,这两个听起来都不是特别吸引我:一种SERIALIZABLE在插入之前检查每个表单值的事务。或者,对pq错误结构进行某种形式的解析。

有没有实现这种系统的通用模式?我想对用户说,Sorry that username exists而不是说Sorry something bad happened

附带说明,PostgreSQL文档指出:

仅为有限数量的错误类型提供模式名称,表名称,列名称,数据类型名称和约束名称的字段。参见 附录A。

但是链接页面对于数据库对象中返回的值不是很有帮助。

postgresql validation error-handling go

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

如果我们使用自动递增的标识列和PK,则违反3NF

正如Thomas Connolly和Carolyn Begg在180页写的"数据库解决方案第二版"一书所述:

第三范式(3NF)
已经在1NF和2NF中的表,其中所有非主键列中的值只能从主键列而不是其他列中计算出来.

我已经看到很多人们使用标识列的情况,尽管他们的表中已经有了主键列.记录也可以从标识列中得出,如果我们在表中使用自动递增的标识列和主键,是不是违反了3NF?

更新:如果不是这样,哪个列应作为另一个表中的外键引用.主键列或标识列?

database-design entity-relationship third-normal-form database-normalization

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