我一直在阅读有关数据库模型的内容,但仍然不了解面向对象和对象关系模型之间的根本区别.
到目前为止,我了解到对象关系数据库是一个支持对象的关系数据库.是什么让面向对象数据库与众不同?(除了不支持关系模型).
面向对象的数据库是否也给出了对象方法 - 行为(如在OO编程语言中),而对象关系数据库只将它们视为具有属性和对其他对象的引用的结构?如果是这样,如何在OO数据库中使用这些对象方法?
我希望学习Linq来查询MS SQL数据库,但我不确定要采用哪条路径.我最近读到Linq to SQL正在进入实体框架,并且开发可能停滞不前.
是否值得学习Linq to SQL?或者我应该关注实体框架或其他对象关系模型,如Ideablade的Devforce,它正在转向Linq作为它的查询语言?
.net entity-framework object-relational-model linq-to-sql devforce
我想知道,使用自动增量主键作为业务实体标识符是不好或好主意,如Partner Id或Account Number?
另外,如果我选择这种方法,我会面临哪些陷阱?
我定义了以下对象和关系.这实际上是一个非常简单的案例,我提供所有这些领域只是为了说明为什么我认为吸入和注射麻醉应该由两个不同的类别来定义.
class InhalationAnesthesia(Base):
__tablename__ = "inhalation_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
concentration = Column(Float)
concentration_unit = Column(String)
duration = Column(Float)
duration_unit = Column(String)
class TwoStepInjectionAnesthesia(Base):
__tablename__ = "twostep_injection_anesthesias"
id = Column(Integer, primary_key=True)
anesthetic = Column(String)
solution_concentration = Column(Float)
solution_concentration_unit = Column(String)
primary_dose = Column(Float)
primary_rate = Column(Float)
primary_rate_unit = Column(String)
secondary_rate = Column(Float)
secondary_rate_unit = Column(String)
class Operation(Base):
__tablename__ = "operations"
id = Column(Integer, primary_key=True)
anesthesia_id = Column(Integer, ForeignKey('inhalation_anesthesias.id'))
anesthesia = relationship("InhalationAnesthesia", backref="used_in_operations")
Run Code Online (Sandbox Code Playgroud)
但是,我想Operation以这样的方式定义类的麻醉属性,即任何Operation对象都可以指向 …
我想做这样的事情
create type Item as object (
id number,
subitems table of ref Item
)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样做时,oracle会抛出一个异常.这是可能的,如果是,那么如何?
我有客户端表和client_address信息表.我需要在更新下面给出的client.my模型类时更新两个表,
class Client extends Model {
public function addressInfo() {
return $this->hasOne('App\Model\ClientAddressInfo');
}
}
class ClientAddressInfo extends Model {
protected $table = 'client_address_info';
public function client() {
return $this->belongsTo('App\Model\Client');
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器更新如下.
$client = Client::findOrFail($id);
$client->name = rand(0, 1222222);
$address = ClientAddressInfo::where('client_id', '=', $id)->get();
$address->street = "new street";
$address->save();
Run Code Online (Sandbox Code Playgroud)
但它不起作用,请您解释更新模型及其相关模型的最佳实践.
我正在与 postgreSQL 作斗争,因为我不知道如何将一个类型 A 的实例链接到一组类型 B 的实例。我将给出一个简短的示例:
假设我们想要建立一个包含音乐专辑和人物的数据库,每个人都有一个他们最喜欢的专辑的列表。我们可以这样定义类型:
CREATE TYPE album_t AS (
Artist VARCHAR(50),
Title VARCHAR(50)
);
CREATE TYPE person_t AS (
FirstName VARCHAR(50),
LastName VARCHAR(50),
FavAlbums album_t ARRAY[5]
);
Run Code Online (Sandbox Code Playgroud)
现在我们要创建这些类型的表:
CREATE TABLE Person of person_t WITH OIDS;
CREATE TABLE Album of album_t WITH OIDS;
Run Code Online (Sandbox Code Playgroud)
现在,当我想让我的数据库成为对象关系型数据库时,我不想将专辑“对象”嵌套在表 Person 的 FavAlbums 行中,但我想“指向”表 Album 中的条目,这样n条Person记录就可以引用同一个Album记录,而无需一遍又一遍地重复。
我阅读了该手册,但似乎缺少一些重要的示例,因为对象关系功能并未经常使用。我也熟悉关系模型,但我想使用额外的表来表示关系。
因此,我尝试将临时表中的值复制到具有数组类型的表中,但出现以下错误,但我找不到克服的方法。
ERROR: cannot assign to field "addressid" of column "address" because its type addresstype[] is not a composite type
LINE 32: ...nID,Person.Title,Person.FirstName,Person.LastName,Person.Add...
^
********** Error **********
ERROR: cannot assign to field "addressid" of column "address" because its type addresstype[] is not a composite type
SQL state: 42804
Run Code Online (Sandbox Code Playgroud)
这是我尝试的查询:
INSERT INTO Customer (CustomerID,Person.PersonID,Person.Title,Person.FirstName,Person.LastName,Person.Address.AddressID,Person.Address.AddressLine1,Person.Address.AddressLine2,Person.Address.City,Person.Address.PostalCode)
SELECT TCustomer.CustomerID,TPerson.PersonID,TPerson.Title,TPerson.FirstName,TPerson.LastName,TAddress.AddressID,TAddress.AddressLine1,TAddress.AddressLine2,TAddress.City,TAddress.PostalCode
FROM TCustomer,TPerson,TPersonAddress,TAddress
WHERE TCustomer.PersonID = TPerson.PersonID
AND TPerson.PersonID = TPersonAddress.PersonID
AND TPersonAddress.AddressID = TAddress.AddressID;
Run Code Online (Sandbox Code Playgroud)
表格和类型:
CREATE TYPE AddressType AS(
AddressID integer,
AddressLine1 text,
AddressLine2 text,
City …Run Code Online (Sandbox Code Playgroud) arrays postgresql database-design insert object-relational-model