相关疑难解决方法(0)

29
推荐指数
5
解决办法
9万
查看次数

`primary key`关键字如何与SQL Server中的聚簇索引相关?

PRIMARY KEY关键字如何与SQL Server中的聚簇索引相关联?

(有些人似乎想回答这个问题而不是我问的另一个问题,所以我给他们一个更好的地方去做.)

sql-server performance primary-key physical-design clustered-index

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

可以安全地在SQL中使用人类可读的主键吗?

我想知道我是否可以将人类可读的主键用于相对较少数量的数据库对象,这将描述大都市区域.

例如,使用"washington_dc"作为华盛顿特区都市区的pk,或纽约市的"nyc".

对象将国外键入这些城域网对象,我希望能够告诉当一个人或企业只是通过看他们的数据库记录位置.

我只是担心,因为我的直觉告诉我这可能是违反良好做法的严重犯罪.

那么,我"允许"做这种事吗?

谢谢!

sql primary-key human-readable

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

使用时间戳作为主键时,避免主键约束违规

我有一个数据库表,其中主键被定义为时间戳.应用程序根据触发的特定事件将记录插入数据库,并且使用的时间戳将是创建此实例的时间戳.由于此应用程序在多个服务器上运行,并且该事件同时在多个服务器中同时触发,因此在某些情况下,由于主键冲突,数据不会插入到数据库中.

为了避免这种情况,我可以改变什么?我现在的想法是,

  1. 在执行数据库插入之前等待一段随机时间.

    Random r = new Random();
    long time = r.nextLong() % 1000;
    time = time < 0 ? -time : time; // making sure that the waiting time is positive
    try {
        Thread.sleep(time);
    } catch (InterruptedException e) {
        throw new CustomeException(e);
    }
    Table1DataAccess.getInstance().insert(new Date(), "some description"); // inserting data into the table which has two fields.
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使主键成为复合键.

对我来说,它们都不是好的解决方案,有人能指出我正确的方向吗?

PS我尝试插入数据的表在Date类型中有timestamp列,我猜它只有几秒的精度.当我使用该类型时timestamp,它提供了默认的微秒精度,它最多可以提供纳秒.

java mysql database primary-key

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

找到自然主键有什么好处

我的问题或多或少与问题相反:为什么人们在使用序列作为代理时似乎更容易找到关系中的自然主键.

BradC回答相关问题时提到,选择主键的标准是唯一性,不可简化性,简单性,稳定性和熟悉度.在我看来,使用序列牺牲了最后一个标准,以便为前四个提供最佳解决方案.

如果我认为这些标准是正确的,我可以将我的问题重新表述为:在哪种情况下,人们会认为通过寻找一种同样熟悉的独特,不可简化,简单和稳定的密钥来使一个人的生活复杂化是有利的?

database database-design primary-key

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