标签: database-schema

SQL Server数据库架构版本控制和更新

对于我的应用程序,我必须支持更新方案,并且数据库可能会受到影响.

我希望能够在不安装中间版本的情况下从旧版本更新到最新版本.例如假设我有版本A(最旧的),B(中间版)和C版(新版本).我希望能够将版本A直接更新到版本C.对于应用程序文件,这很简单,我只需将旧版本替换为新版本.但是对于数据库,我不希望生成一个SQL脚本来将数据库模式从A直接更改为C,而是我想首先应用脚本将模式从A更改为B,从B更改为C.

如何存储SQL Server数据库的数据库版本?我可以设置任何特殊属性,而不是实现版本表吗?在我的代码(.NET)中,我想读取数据库版本,并相应地以正确的顺序执行更新SQL脚本.

我将使用SQL Server 2005和SQL Server 2008.

sql-server database-versioning database-schema

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

如何在数据库级别为一对多关联设置唯一性?

我的问题很简单,但我找不到任何GORM语法.

考虑以下课程:

class Article {
  String text

  static hasMany = [tags: String]

  static constraints= {
    tags(unique: true) //NOT WORKING
  }

}
Run Code Online (Sandbox Code Playgroud)

我希望在我的约束中定义的每篇文章都有一个唯一的标记名称,但我不能使用上面的语法.显然,我需要在DB模式中使用以下内容:

create table article_tags (article_id bigint, tags_string varchar(255), unique (article_id , tags_string))
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

PS:我也坚持设置标签最小和最大尺寸的约束

grails grails-orm database-schema grails-constraints

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

MySQL表中的64位密码哈希值

我用这个函数来哈希我的密码:

// RETURNS: rAyZOnlNBxO2WA53z2rAtFlhdS+M7kec9hskSCpeL6j+WwcuUvfFbpFJUtHvv7ji   
base64_encode(hash_hmac('sha384', $str . SC_NONCE, SC_SITEKEY, true));
Run Code Online (Sandbox Code Playgroud)

我在char(64)字段(MySQL -InnoDB)中存储哈希值.

我应该使用varchar(64)而不是char(64)吗?为什么?

编辑: 我用sha384更改了sha256.因为在这个例子中,sha256总是为我返回44个字节.抱歉令人困惑.现在它是64字节.

php mysql hash database-schema

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

寻求vCard数据元素的架构

我需要一个关系数据库模式来存储vCard ver 3数据元素.

我没有阅读RFC并从头开始设计,而是希望看看已经完成此操作的人是否愿意分享他们的数据库设计.

vcf-vcard database-schema

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

TIMESTAMP(6)Oracle Insert

我正在为数据库生成虚拟数据,一个属性正在使用TIMESTAMP(6).

谁能给我一个价值看起来如何的例子?

此外,我希望能够插入日期

03/18/2012 02:35 AM

所以它看起来像

INSERT INTO FLIGHT VALUES (1,'London Heathrow','Miami Airport','03/18/2012 02:35 AM','04/18/2012 13:35 PM');
Run Code Online (Sandbox Code Playgroud)

这可能吗?非常感谢...

编辑 - -

我怎样才能摆脱时间戳列巨大的空间

空间

oracle relational-database oracle11g database-schema

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

Postgresql - pg_dump - 找不到匹配的模式

我正在尝试从PostgreSQL数据库创建备份,但收到以下错误:pg_dump:找不到匹配的模式

我以root身份登录并运行命令

pg_dump -f db.dump --format = plain --schema = existing_schema --username = userx --host = localhost databasename

  1. 我用userx登录到psql并尝试了\ dt - 这给了我信息,名为existing_schema的模式是公共的.
  2. 我检查了\ l以查看databasename是数据库名称.
  3. 密码是正确的,否则我无法访问psql.
  4. Localhost是正确的,从正在运行的进程中检查.尝试了服务器的ip-address,但在这种情况下,pg_admin给出了有关主机地址的错误.

输出\ dl:

 
                  List of relations

Schema |                Name                 | Type  | Owner
--------+-------------------------------------+-------+-------
 public | existing_schema                    | table | userx

postgresql pg-dump database-schema

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

使用PostgreSQL的钱类型而不是数字

我正在考虑将numeric我的PG 9.2数据库模式的列转换为money,主要是因为我看到(或想象?)在数据库级别而不是应用程序级别处理舍入和格式化的好处.这个决定会有一些缺点吗?

postgresql currency database-schema money-format

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

将XML文件同步到MySQL数据库

我公司使用内部管理软件存储产品.他们希望将所有产品转置到MySql数据库中,以便他们可以在公司网站上提供他们的产品.

注意:他们将继续使用自己的内部软件.该软件可以以各种文件格式(包括XML)导出所有产品.

同步不一定是实时的,他们满足于每天(深夜)同步MySql数据库一次.

此外,他们软件中的每个产品都有一个或多个图像,然后我还要提供网站上的图像.

以下是XML导出的示例:

<?xml version="1.0" encoding="UTF-8"?>
<export_management userid="78643">
    <product id="1234">
        <version>100</version>
        <insert_date>2013-12-12 00:00:00</insert_date>
        <warrenty>true</warrenty>
        <price>139,00</price>
        <model>
            <code>324234345</code>
            <model>Notredame</model>
            <color>red</color>
            <size>XL</size>
        </model>
        <internal>
            <color>green</color>
            <size>S</size>
        </internal>
        <options>
            <s_option>aaa</s_option>
            <s_option>bbb</s_option>
            <s_option>ccc</s_option>
            <s_option>ddd</s_option>
            <s_option>eee</s_option>
            <s_option>fff</s_option>
      ...
            <extra_option>ggg</extra_option>
            <extra_option>hhh</extra_option>
            <extra_option>jjj</extra_option>
            <extra_option>kkk</extra_option>
      ...
        </options>
        <images>
            <image>
                <small>1234_0.jpg</small>
            </image>
            <image>
                <small>1234_1.jpg</small>
            </image>
        </images>
    </product>
    <product id="5321">
    ...
    </product>
    <product id="2621">
    ...
    </product>
  ...
</export_management>
Run Code Online (Sandbox Code Playgroud)

关于我该怎么做的一些想法?

如果我的问题不明确,请告诉我.谢谢


编辑: 我使用这样的SQL为每个表填充XML数据:

LOAD XML LOCAL INFILE '/products.xml' INTO TABLE table_name ROWS IDENTIFIED BY '<tag_name>';
Run Code Online (Sandbox Code Playgroud)

然后,检查表格内容我可以看到字段"id"(主键)自动为每个表中的每个相应产品行保持相同.这是正确的,令人惊讶的真棒!

现在的问题是参数,<options>因为它包含具有相同名称( …

xml mysql sql synchronization database-schema

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

开发数据库模型的不确定性

我正在尝试为候选人开发数据库模型,他们的注册考试和考试成绩.这就是我到目前为止所做的.但我不确定是否在正确的轨道上,特别是从检查表到检查结果表.为特定候选人编写一个插入sql代码以供检查人群使用是多么容易

考试类型分为科学,艺术和社会科学.它们每个都有4个组件

在此输入图像描述

database database-design uml relational-database database-schema

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

如何在关系中设置主键?

我想知道如何正确地设置主键关系.例如,我们有ER图表,其中包含元素:

  • 关键属性
  • 弱键属性
  • 识别关系
  • 关联实体

为了将其转换为关系模型,我们应该做一些技巧.上述处理关系的主键,但所有的元素都在自然键 -所以我们可以把它们原样或更换代理键.
考虑一些情况.

情况1

密钥属性是一个名称 - 因此它必须是类型CHARVARCHAR.通常,名称成为关键属性.

案例2

两个(或更多)识别关系成为关系复合主键(由外键组成).

案例3

识别具有弱密钥属性的关系也成为复合主密钥.

案例4

关联实体通常具有两个或多个识别关系,因此它们是连接关系(连接表).

  • 如何为关系设置主键以处理所有上述情况(可能还有一些我没有提及的情况)?

  • 如何避免使用代理键以及在哪些情况下他们是必要的?

  • 如何设置主键的数据类型?

  • 如果必须将复合主键传递给子关系,是否应该用代理替换?

在我的视图中使用代理键的优点和缺点:

好处

  • 它们是紧凑的(通常是类型的INT),有时可以替代复合键

  • 当他们在外国钥匙时,他们是说明性的

  • 他们被无痛地编入索引

缺点

  • 他们是数字而且毫无意义.例如,我希望在我的界面应用程序中填写连接表 - 所以我将别无选择,只能将数字联系起来 …

database database-design entity-relationship relational-database database-schema

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