我正在设计一些将共享2或3个数据库表的应用程序,所有其他表将独立于每个应用程序.共享数据库主要包含用户信息,可能会出现需要共享其他表的情况,但这是我的本能.
我倾向于所有应用程序解决方案的一个数据库,因为我希望具有参照完整性,并且我不必在每个数据库中保持最新的相同信息,但我可能会以100多个表的数据库,其中只有十个表的组将具有相关信息.
每种应用程序方法的数据库可以帮助我保持一切更有条理,但我不知道如何使所有数据库中的相关表保持最新.
所以,基本问题是:你推荐哪两种方法?
谢谢,
豪尔赫·巴尔加斯
编辑1:
当我谈到不能具有引用完整性时,这是因为当这些表位于不同的数据库中时,没有办法在表中使用外键,并且每个应用程序中至少有一个表需要一个外键来共享其中一个表表.
编辑2:
相关问题的链接:
只有第二个人有一个接受的答案.还没有决定做什么.
回答:
我决定使用每个应用程序的数据库,对共享数据库进行跨数据库引用,为每个数据库添加视图,模仿共享数据库中的表,并使用NHibernate作为我的ORM.作为会员系统,我将使用asp.net.
我还将使用触发器和逻辑删除尝试并保持在没有父母的情况下在livin'la vida loca周围飞行的ID的数量最少.保持数据库同步所需的开发工作太多而且收益太少(正如你们所指出的那样).所以,我宁愿通过孤立的记录来战斗.
由于使用ORM和视图是由svinto首先提出的,他得到了正确的答案.
感谢所有人帮助我做出这个艰难的决定.
database architecture sql-server database-design referential-integrity
我正在尝试刷新@ManyToMany关系,但它被清除了......
我的Project类看起来像这样:
@Entity
public class Project {
...
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "PROJECT_USER",
joinColumns = @JoinColumn(name = "PROJECT_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"))
private Collection<User> users;
...
}
Run Code Online (Sandbox Code Playgroud)
但我没有 - 我不想要 - 用户实体中的项目集合.
当我查看生成的数据库表时,它们看起来很好.它们包含所有列和约束(主键/外键).
但是当我持有一个包含用户列表的项目(并且用户仍在数据库中)时,映射表不会更新得到更新,但是当我之后刷新项目时,将清除用户列表.
为了更好地理解:
Project project = ...; // new project with users that are available in the db
System.out.println(project getUsers().size()); // prints 5
em.persist(project);
System.out.println(project getUsers().size()); // prints 5
em.refresh(project);
System.out.println(project getUsers().size()); // prints 0 …Run Code Online (Sandbox Code Playgroud) 我正在寻找伪蜘蛛网站的方法.关键是我实际上并不想要内容,而是一个简单的URI列表.我可以使用该选项与Wget合理地接近这个想法--spider,但是当通过a输出输出时grep,我似乎无法找到合适的魔法来使其工作:
wget --spider --force-html -r -l1 http://somesite.com | grep 'Saving to:'
Run Code Online (Sandbox Code Playgroud)
该grep过滤器似乎完全没有对影响wget输出.我有什么不对或者是否有其他工具我应该尝试更适合提供这种有限的结果集?
UPDATE
所以我发现离线时默认情况下会wget写入stderr.我在手册页中错过了(事实上,如果它在那里我仍然没有找到它).一旦我把回归到stdout,我就更接近我需要的东西了:
wget --spider --force-html -r -l1 http://somesite.com 2>&1 | grep 'Saving to:'
Run Code Online (Sandbox Code Playgroud)
如果有的话,我仍然会对其他/更好的手段感兴趣.
我正在使用C#与XNA框架进行游戏.玩家是屏幕上的2D士兵,用户可以发射子弹.子弹存储在一个阵列中.我已经研究过使用列表和数组,我得出的结论是阵列对我来说好多了,因为会有很多子弹一下子被击中并被摧毁,我读到的内容列表不能处理好吧
阅读了XNA论坛上的一些帖子后,我注意到了这一点:http: //forums.xna.com/forums/p/16037/84353.aspx
我创建了一个像这样的结构:
// Bullets
struct Bullet
{
Vector2 Position;
Vector2 Velocity;
float Rotation;
Rectangle BoundingRect;
bool Active;
}
Run Code Online (Sandbox Code Playgroud)
我做了这样的数组:
Bullet[] bulletCollection = new Bullet[100];
Run Code Online (Sandbox Code Playgroud)
但是当我尝试做这样的代码时:
// Fire bullet
if (mouseState.LeftButton == ButtonState.Pressed)
{
for (int i = 0; i < bulletCollection.Length; i++)
{
if (!bulletCollection[i].Active)
{
// something
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'Zombie_Apocalypse.Game1.Bullet.Active'由于其防护等级而无法访问
任何人都可以伸出援手吗?我不知道为什么会出现这个错误,或者即使我正确地声明数组或其他任何东西......因为XNA论坛上的帖子没有详细说明.
感谢您提供任何帮助.:)
我想在java中创建一个可以访问项目中所有其他类的类.
我在默认包中创建了它,现在无法看到.在java中执行此操作的最佳方法是什么?
C困扰我对弦乐的处理.我心中有这样的伪代码:
char *data[20];
char *tmp; int i,j;
for(i=0;i<20;i++) {
tmp = data[i];
for(j=1;j<20;j++)
{
if(strcmp(tmp,data[j]))
//then except the uniqueness, store them in elsewhere
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我对此进行编码时,结果很糟糕.(我处理了所有内存,小东西等)问题显然在第二个循环中:D.但我想不出任何解决方案.如何在数组中找到唯一的字符串.
输入示例:abc def abe abc def deg输入唯一的输入:应找到abc def abe deg.
如果我在VB6项目中使用类型库,我是否需要在目标计算机上使用编译的exe分发.tlb文件(甚至可能注册它?)?
我的python脚本使用subprocess来调用非常嘈杂的linux实用程序.我想将所有输出存储到日志文件中并向用户显示一些输出.我认为以下内容可行,但在实用程序产生大量输出之前,输出不会显示在我的应用程序中.
#fake_utility.py, just generates lots of output over time
import time
i = 0
while True:
print hex(i)*512
i += 1
time.sleep(0.5)
#filters output
import subprocess
proc = subprocess.Popen(['python','fake_utility.py'],stdout=subprocess.PIPE)
for line in proc.stdout:
#the real code does filtering here
print "test:", line.rstrip()
Run Code Online (Sandbox Code Playgroud)
我真正想要的行为是过滤器脚本在从子进程接收时打印每一行.Sorta就像tee使用python代码一样.
我错过了什么?这甚至可能吗?
更新:
如果将a sys.stdout.flush()添加到fake_utility.py,则代码在python 3.1中具有所需的行为.我正在使用python 2.6.您会认为使用proc.stdout.xreadlines()将与py3k一样工作,但事实并非如此.
更新2:
这是最小的工作代码.
#fake_utility.py, just generates lots of output over time
import sys, time
for i in range(10):
print i
sys.stdout.flush()
time.sleep(0.5)
#display out put line by …Run Code Online (Sandbox Code Playgroud) 关于使用传统SSL创建的IP到域映射问题,NHIN Direct 的安全和信任工作组正在进行讨论.如果HISP(由NHIN Direct定义)想要为提供商托管数千个NHIN Direct"健康域名",那么必须为这些域中的每个域购买IP将是"人为膨胀的成本".
由于Apache和OpenSSL最近发布了支持SNI扩展的TLS,因此可以使用SNI作为服务器端此问题的解决方案.但是,如果我们决定允许 NHINDirect传输层的服务器实现支持TLS + SNI,那么我们必须要求所有客户端也支持SNI.默认情况下,基于OpenSSL的客户端应该这样做,如果您的给定编程语言SSL实现不支持SNI,我们总是可以实现TLS + SNI感知客户端代理.看来使用OpenJDK的本机Java应用程序还不支持SNI,但我无法从该项目中得到直接的答案.我知道有OpenSSL Java库可用,但我不知道这是否可行.
你能否给我一个关于TLS + SNI支持Java客户端的"最新技术"总结?我需要一个Java实现者的观点.
java ×3
arrays ×2
architecture ×1
c ×1
c# ×1
client-side ×1
com ×1
database ×1
grep ×1
hibernate ×1
iphone ×1
jpa ×1
many-to-many ×1
python ×1
sql-server ×1
ssl ×1
strcmp ×1
string ×1
struct ×1
subprocess ×1
typelib ×1
uibutton ×1
uri ×1
vb6 ×1
web-crawler ×1
wget ×1
xna ×1