我们将多个数据库的多个实例部署到多个站点.这些网站都有自己的DBA.在总公司,我们希望监控所有卫星数据库,并在任何模式更改时获得通知(表结构,存储过程,视图等).
有没有可以执行此功能的工具?
我已经接管了一个存储健身信息的数据库,我们正在讨论某个表格,以及它是应该保留为一个表还是分成三个表.
今天,有一个名为:锻炼的表,其中包含以下字段
id,exercise_id,reps,weight,date,person_id
因此,如果我在一天内完成了2组3个不同的练习,那天我将在该表中有6个记录.例如:
ID,exercise_id,代表,重量,日期,PERSON_ID
1,1,10,100,1/1/2010,10
2,1,10,100,1/1/2010,10
3,1,10,100,1/1/2010年,10
4,2,10,100,1/1/2010,10
5,2,10,100,1/1/2010,10
6,2,10,100,1/1/2010, 10
所以问题是,鉴于多个记录中存在一些冗余数据(date,personid,exercise_id),是否应将其标准化为三个表
WorkoutSummary:
- id
- date
- person_id
WorkoutExercise:
- id
- workout_id(外键进入WorkoutSummary)
- exercise_id
WorkoutSets:
- id
- workout_exercise_id(外键进入WorkoutExercise)
- 代表
- 重量
我猜测的缺点是在重构之后查询会更慢,因为现在我们需要连接3个表来执行之前没有连接的相同查询.重构的好处允许将来在锻炼总结级别或锻炼级别添加新字段而不添加更多重复.
关于这场辩论的任何反馈?
我想克隆我现有的oracle数据库结构,没有数据包括包,用户,表空间等.我读了一些方法,但它们都复制了数据.反正是为了做到这一点吗?
提前致谢.
我感兴趣的是存储用户日程的方法.我需要保存一周的日期和可用的时间.可以是从8:00到12,或从9:00到12,然后从15:00到18:00,间隔.我不是对花哨的数据库操作感兴趣我只需要在需要时添加并轻松获取日期.
我有几个Django应用程序,都在一个项目目录中.每个应用程序都有一个models.py包含大量模型的文件.我一直在将模型从一个应用程序导入到另一个应用程序,没有任何问题,特别是创建一个带有外键字段的新模型,指向另一个应用程序中的模型.到目前为止没问题.
我决定创建一个新模型.它有4个ForeignKey字段,每个字段指向不同应用程序中的不同模型.直接前进.但是,当我尝试使用south将架构迁移到数据库时,它告诉我它无法导入我的模型.为什么?!
所以,这是我的新模型:
class Action_Tracker(models.Model):
dateOfAction = models.DateField(verbose_name = 'Date of Action')
user = models.CharField(max_length=30, verbose_name = 'Action completed by')
sys = models.ForeignKey(System, verbose_name='For System')
wo = models.ForeignKey(Work_Order, verbose_name='Associated WO', blank=True, null=True)
inv = models.ForeignKey(Invoice, verbose_name = 'Associated Invoice', blank=True, null=True)
subdT = models.ForeignKey(SUBD_Tracker, verbose_name = 'Associated SUBD Tracker', blank=True, null=True)
notes = models.TextField(verbose_name='Notes of Action', blank=True, null=True)
def __unicode__(self):
return u'%s -- %s' % (self.dateOfAction, self.notes)
class Meta:
orering = ['dateOfAction']
Run Code Online (Sandbox Code Playgroud)
在这个models.py …
我有一个PostgreSQL数据库,其中加载了PostGIS功能.我想转储数据库的模式,但pg_dump -s转储函数以及表定义.
有没有办法排除函数,只是转储表定义?
我们为年轻专业人士提供了一个网络产品,使他们可以创建自己的页面来展示自己的专业身份.因此,该表users包含有关用户的信息(电子邮件,密码,名称),包括其凭据和有关其页面的信息(优质与否,页面地址,主题)
现在,我们希望为招聘人员提供注册我们平台以浏览候选人的可能性.招聘人员也可以是具有页面但不必具有页面的用户.
现在我们的两种方法:
A /创建一个recruiters包含招聘人员姓名和凭据的表,以及一个列user_id,如果他们创建了一个站点,则ID与该表连接users.
数据库结构:
users
ID name email password group_id premium theme page_address
recruiters
ID name email password company_id user_id
Run Code Online (Sandbox Code Playgroud)
B /将招聘人员添加到users不同的表中,group_id并在另一个表中移动有关用户页面的所有信息(优质与否,页面地址,主题).我们还将为招聘人员提供第三个表格,其中包含特定于他们的任何信息.
数据库结构:
users
ID name email password group_id
pages
user_id premium theme page_address
recruiters
user_id company_id
Run Code Online (Sandbox Code Playgroud)
C /任何其他解决方案?
感谢您的投入!
特里斯坦
我在一些问题上感到困惑.我需要他们的答案.如果我们的关系模型也是去标准化那么为什么我们更喜欢维度模型?我们更喜欢维模型而不是关系模型的原因是什么?您的历史数据也可以存储在OLTP中,您可以在任何OLTP上轻松执行报告,然后我们使用维度模型和数据仓库?维度和非规范化表之间有什么区别?
提前致谢
oltp denormalization relational-database dimensional-modeling database-schema
对于一个项目,我被要求查看现有的SQL数据库,看看它是否可以改进.它基本上是一个客户数据库,每个客户都有一堆不同类型的数据.这(基本上)是如何组织的:
每个客户在客户表中都有一行带有客户ID.然后,对于每种类型的数据,每个客户都有自己的表.因此,例如,"作业"不会有一个中央表,每行都有一个客户ID,但对于每个客户,会有一个名为"jobs1234"的作业表(1234是客户ID).
现在,我的第一反应是混淆为什么你会这样组织它.我一直都知道,如果没有真正思考超越这一点,那么规范化总是更好.但是当我与人讨论时,有些人指出这可能是出于性能原因.他们说,如果"工作"的行数太多,那么将每个客户拆分比将它们全部放在一个表中更好.
关于索引和客户ID是标识符的东西.我很困惑为什么这种方法会提高性能,到目前为止还没有真正得到一个非常明确的答案.任何人都可以向我解释为什么会这样,如果在某些情况下这种方法更好的话甚至是真的吗?
我们希望能够将我们的应用程序连续交付到生产中.我们目前部署到azure并使用table/blob存储并拥有一个azure sql数据库,我们可以使用该实体访问它.
随着数据库模式的更改,我们希望能够自动将模式更改应用到生产数据库,但是当应用程序处于活动状态并且代码更改同时部署到许多节点时,我们不确定是什么正确的方法是.
经过一些阅读后,似乎(这是有道理的)应用程序需要容忍2个不同的数据库模式版本,因此无论是旧版本的代码还是新版本的代码都无关紧要数据库,但是我不确定在应用程序中处理这个问题的最佳方法是使用实体框架.
我们是否应该在代码中具有EF生成的类的版本化实例,这些实例知道如何访问特定版本的模式?更新架构并且针对数据库运行旧版本的代码时会发生什么?
我们的实体框架类映射到db中特定模式的视图,并且没有任何内容映射到底层表,因此可能允许我们创建旧代码使用的v1视图和新代码使用的v2视图,但是保持这个感觉它会有点像一场噩梦(它已经足够痛苦只是维持EF映射到视图而不是表格)
那么这个领域的最佳实践是什么?别人怎么做才能解决这个问题?
c# entity-framework relational-database database-schema continuous-deployment
database-schema ×10
mysql ×2
sql ×2
c# ×1
clone ×1
database ×1
django ×1
dump ×1
oltp ×1
oracle ×1
postgresql ×1
sql-server ×1