ER-Model

advertisement
Why it is required to use ERD?
Ease of tasks distribution between
programmers
Evaluation of data consistencies‫اتساق‬
before building database
Efficient relationships management
between entities
Advantages of E.R. Model
Exceptional conceptual simplicity
Visual representation
Effective communication tool
Integrated with the relational data model
Disadvantages of E.R. Model
Limited constraint representation
Limited relationship representation
No data manipulation language
Loss of information content
‫عناصر ال‪ERD‬‬
‫•‬
‫‪1) Entity Set‬‬
‫‪ OOP‬وهو الكائن مثل مفهومه في ال‬
‫ويتم وضعها في التصميم على شكل مستطيل‬
‫‪Examples: a computer, an employee, a song, a mathematical theorem. Entities‬‬
‫‪are represented as rectangles.‬‬
‫‪2) attribute‬‬
‫وهو خواص ال كائن‬
‫وياخذ الشكل البيضاوى‬
‫‪3) Primary key‬‬
‫المستخدم ك مفتاح أساسى ‪ attribute‬يتم وضع خط تحت ال‬
‫‪4) Relationship‬‬
‫‪2 entities‬العالقات ‪ ،‬وهى تحدد كيفية اتصال‬
‫‪ diamond‬مع بعضهم ‪ ،‬وهى تأخذ شكل الماسي‬
What is the relationships?
• Relationships can be thought of as verbs, linking
two or more nouns. Examples: an owns
relationship between a company and a
computer, a supervises relationship between an
employee and a department, a performs
relationship between an artist and a song, a
proved relationship between a mathematician
and a theorem. Relationships are represented as
diamonds, connected by lines to each of the
entities in the relationship
ER diagram for bank
‫• تحويل العالقات إلى قاعدة بيانات عالئقية ( ‪Mapping Relationships to a‬‬
‫‪:) Relational Database‬‬
‫‪ -1‬العالقات الثنائية (‪ :)M:N‬قم بإنشاء جدول جديد خصائصه هي نفس‬
‫خصائص المفتاحين األساسيين للكيانين طرفي العالقة‪ ,‬والمفتاح األساسي له‬
‫مكون من اجتماع المفتاحين األساسيين للكيانين طرفي العالقة‪ ,‬قم أيضا‬
‫بتضمين أي خصائص تملكها العالقة (‪ )M:N‬في الجدول الجديد‪.‬‬
‫مثال‪:‬في شركة معينة هناك موظفين‪ .‬و يعمل كل موظف في مشروع او أكثر وكذلك في‬
‫المشروع الواحد يجب أن يعمل فيه واحد أو أكثر من الموظفين‪ .‬لكن يمكن أن يكون هناك‬
‫موظفين ال يعملون في مشاريع‪ .‬وكل موظف له عدد ساعات عمل في األسبوع في كل‬
‫مشروع‬
‫اسم‬
‫الموظف‬
‫عدد‬
‫ساعات‬
‫العمل‬
‫رقم الموظف‬
‫الموقع‬
‫الراتب‬
‫‪N‬‬
‫الموظف‬
‫اسم‬
‫المشروع‬
‫‪M‬‬
‫يعمل‬
‫في‬
‫رقم‬
‫المشروع‬
‫المشروع‬
‫جدول الموظف‬
‫رقم الموظف‬
‫اسم الموظف‬
‫الراتب‬
‫جدول المشروع‬
‫رقم المشروع‬
‫الموقع‬
‫اسم المشروع‬
‫جدول جديد‬
‫رقم الموظف‬
‫رقم المشروع‬
‫عدد ساعات العمل‬
‫مثال‪ :‬ليكن لدينا الكيان ‪ STUDENT‬و بفرض أن الزبون بعد رؤيته للمخطط و‬‫التوصيف الكتابي وكذلك نماذج البيانات قال‪" :‬أريد تسجيل جميع السيارات التي يقودها‬
‫الطالب“‪ .‬بفرض أن السيارات المسجلة في قاعدة البيانات يجب أن تقاد من قبل طالب‬
‫واحد وواحد فقط ومن الممكن أيضا لطالب ما أن يقود سيارة واحدة وواحدة فقط‪.‬‬
‫•من أجل كل طالب ‪ STUDENT‬سيكون هناك اسم ‪ name‬وهو مكون من(االسم األول ‪,‬‬
‫االسم األخير ‪ ,‬االسم األوسط)‪ ،‬وسيكون هناك عنوان ‪ address‬وعمر الطالب ‪ age‬و‬
‫الذي يحسب اعتمادا على التاريخ الحالي و تاريخ الوالدة ‪.birthdate‬‬
‫•وخصائص سيارة الطالب (رقم السيارة ‪ ,‬صانع السيارة ‪ ,‬النموذج ‪ ,‬اللون ‪ ,‬سنة‬
‫الموديل)‬
‫‪ ‬نالحظ هنا أن المشاركة الكلية هي من طرف السيارة (‪ )AUTOMOBILE‬ويوجد‬
‫مشاركة جزئية من قبل الطالب (‪ )STUDENT‬لذا سنأخذ المفتاح الرئيسي من الطرف‬
‫ذو المشاركة الجزئية (‪ )STUDENT‬ونضمنه في جدول السيارة (‪ )AUTOMOBILE‬لذا‬
‫سنضمن المفتاح الرئيسي للطالب ‪ student_number‬في جدول السيارة كمفتاح أجنبي‬
‫‪ ,‬و هذا موضح فيما يلي‪:‬‬
Explanation of the previous example
•
we have 5 entities
teacher
student
subject
group
Mark
‫ كل منهما له‬attributes
‫وما تحته خط هو المفتاح األساسي‬
‫ عالقات‬3 ‫ولدينا‬
‫منهما‬
2 ‫ عالقة ثنائية " ما بين‬entities "
belong
3 ‫ وعالقتين ثالثية " ما بين‬entities
give
supervises
University ERD
How to understand ERD
The set of symbols consist of Crow’s feet
•
Zero through Many (crow's feet, O)
•
• One through Many (crow's feet, dash)
•
• One and Only One (dash, dash)
•
• Zero or One (dash, O)
Zero through Many
One through Many
One and Only One (onne)
Zero or One
The relationship between Employee and Project in the
example is a many to many relationship. It would exist
in logical and physical data models as follows:
•
One-to-One
example
• Insurance company for cars, has a customers,
each one has a car or more, the company
wants a database for liable car accidents.
• It is required to Analyze the data base and
draw ERD
•
analysis
Entities
1- person has name, address, id
2- car has model, year, car id
3- the accident has date, place, report number
Relations
1- Owns between person and car 1 to N
2- accident between car, person and accident, it is ternary
relation
(between car and accident 1to N
Between person and accident 1to N
Supermarket ERD like alothem
Relationship symbols
Entity symbols
A special entity that is
also a relationship
Relationship degrees
specify number of
entity types involved
Relationship
cardinalities specify
how many of each
entity type is allowed
25
‫إعداد‬: ‫محمد صبحي أبو حطب‬- ‫االشراف التربوي‬
/‫مديرية التربية رام هللا‬-5/2007
Entity example
‫‪ERD collage‬‬
‫العالمة‬
‫عدد الساعات المعتمدة‬
‫الرقم‬
‫العام الدراسي‬
‫االسم‬
‫المقرر‬
‫االسم‬
‫يدرس‬
‫العام الدراسي‬
‫الفصل الدراسي‬
‫المدرس‬
‫الرقم‬
‫القسم‬
‫الهاتف‬
‫الرقم‬
‫الطالب‬
‫يسجل‬
‫العالمة‬
‫االسم‬
‫الفصل الدراسي‬
‫العنوان‬
‫التخصص‬
Example
Name
Gender
E MAIL
studentID
student
student
PK sutdentID
PK
Name
Gender
EMAIL
Professor
teaches
student
‫‪ERD Hospital‬‬
‫االسم‬
‫الرقم‬
‫االسم‬
‫الهاتف‬
‫التخصص‬
‫الرقم‬
‫الدواء‬
‫الرقم‬
‫الهاتف‬
‫الغرفة‬
‫الطبيب‬
‫‪0‬‬
‫‪0‬‬
‫الكمية‬
‫عدد األسرة‬
‫يعالج‬
‫يصرف‬
‫ينام في‬
‫‪0‬‬
‫المريض‬
‫‪0‬‬
‫االسم‬
‫‪0‬‬
‫الرقم‬
‫تاريخ التنويم‬
‫‪ERD Library‬‬
‫عنوان الكتاب‬
‫دار النشر‬
‫تاريخ االستعارة‬
‫تاريخ النشر‬
‫الرقم‬
‫تاريخ الميالد‬
‫نوع االستعارة‬
‫مدة االستعارة‬
‫الرقم‬
‫االسم‬
‫عدد الصفحات‬
‫الكتاب‬
‫المستعير‬
‫يستعير‬
‫العمل‬
‫يكتب بواسطة‬
‫المؤلف‬
‫االسم‬
‫العنوان االلكتروني‬
‫جهة العمل‬
ERD University
2.2.1 Identifier Attributes
• Candidate key
– Attribute (or combination of attributes) that uniquely
identifies each instance of an entity type
– Some entities may have more than one candidate key
• Ex: A candidate key for EMPLOYEE is Employee_ID, a second is the
combination of Employee_Name and Address.
• If there is more than one candidate key, need to make a choice.
• Identifier
– A candidate key that has been selected as the unique
identifying characteristic for an entity type
Figure 3-9a Simple key attribute
‫إرشادات حول تعيين المفتاح االساسي( او شروطه)‪:‬‬
‫• يجب ان ال تتغير قيمته ابدا خالل عمل النظام‬
‫• يجب ان ال تكون قيمته فارغة ( قيمه مطلوبةدائما )‬
‫•‬
‫يمكن ان يكون مركبا ً اذا تعذر الحصول على مفتاح بسيط‬
‫• ان ال تتكرر قيمته‬
‫• ان يكون فريدأ ومميزا لحاله واحدة على االكثر من سجالت‬
‫الكيان‬
‫صفة للعالقة‬
‫العالقة يمكن تمثيلها بشكل معين وخطوط بين الكيانات وهي (اكمل) وتقرا ان‬
‫الموظف اكمل الدورة وتكون بين كيان الموظف والدورة ونوع العالقة سيبحث‬
‫فيما بعد‬
‫درجة العالقة يقصد به عدد ‪Cardinality‬‬
‫الكيانات المرتبطة فيما بينها‬
‫هنا أنواع مختلفة من‬
‫الكيانات ترتبط مع بعضها‬
‫وتكون اكثر من نوعين‬
‫هنا يرتبط نوعين‬
‫مختلفين من‬
‫الكيانات مع‬
‫بعضهما‬
‫كيان واحد يرتبط مع‬
‫كيان آخر من نفس‬
‫نوع الكيان ومثال ذلك‬
‫الموظف يكون مديرا‬
‫لموظفين آخرين‬
EMPLOYEE
IS SUPERVISED BY
supervises
AUTOMOBILE
ENGINE
PRODUC
T
VENDOR
INSTRUCTOR
SKILL
DEPARTMENT
INSTRUCTOR
SALES ORDERS
SALES ORDERS
ORDER ITEMS
STUDENT
STUDENT
INV. ITEMS
INV. ITEMS
‫أمثله عن أنواع الروابط‬
Draw ERD representing CD Shop:
marketing materials promotes a CD, CD’s may be offered by at least no marketing material and may be offered by many marketing material .
The CD’s may come from one vendor while vendors sells many CD’s
CD order may contain one CD or more while cd’s may be groped in package or not
each customer place no orders or many orders while each order prepared for one customer
‫صفات أم روابط أم كيان ؟؟‬
‫ان الصفات الروابط يمكن تحويلها الى كيانات وذلك عندما نواجه صفات مرتبطة مركبه او‬
‫صفات متعددة القيم وبذلك يمكننا تمثيلها بواسطة كيانات مشتقه جديدة‬
Car rent
Train teckets
Sql summary
•
•
•
•
create table emp
‫انشاء جدول موظفين باسم‬emp ‫لبنك معين يتكون من الحقول التالية‬
(emp_number(4) primary key,
ename varchar2(15),
Deptno number(7),
Mgr varchar2(15),
sal number(7));
select ename,sal
from emp;
‫عرض أسماء ورواتب جميع الموظفين‬
select ename,mgr
from emp;
‫عرض أسماء الموظفين وأرقام مدرائهم‬
select ename,sal
from emp
where deptno = 20;
‫عرض أسماء ورواتب موظفي الدائرة رقم‬
20
•
create table account
‫انشاء جدول الحسابات باسم اكاونت لبنك معين يتكون من‬
‫الحقول التالية‬
(acc_no number(4) primary key,
acc_name varchar2(15),
balance number(7));
insert into account
‫ادخال في هذا الجدول المعلومات التالية‬
values (1212,'firas',1250000);
insert into account
‫ادخال في هذا الجدول المعلومات التالية‬
values (3334,'ali',2225000);
update account
‫ لاير على هذا الحساب‬100 ‫إضافة‬
set balance = balance + 100
where acc_no = 1212;
alter table account
‫إضافة عمود جديد على الجدول‬
add notes varchar2(20);
delete from account
where acc_no = 3334;
drop table account;
3334 ‫حذف حساب رقم‬
ً ‫حذف الجدول نهائيا‬
Example on creating table
• CREATE TABLE mytab(
id int(11) NOT NULL auto_increment PRIM
ARY KEY ,
Fname varchar(30) NOT NULL,
Lname varchar(30) NOT NULL,
age int(11) NOT NULL,
)
To connect to db using php
• <?php
$con = mysql_connect("localhost","root","");
if(!$con) // ‫إذا فشل في اإلتصال بالقاعده‬
{
die('can not connect'.mysql_error());
}
mysql_select_db(mydb,$con); // ‫تحديد قاعدة البيانات‬
$ sql="insert into mytab values ('','$_POST[fname]','$_POST[lname
]','$_POST[age]')"; // ‫حطينا جملة اإلستعالم في متغير‬
if( !mysql_query( $sql , $con ) ) // ‫يتحقق من تنفيذ اإلستعالم بشكل صحيح‬
{
die('error :'.mysql_error());
}
echo "1 record added";
mysql_close($con); // ‫نهاية التتعامل مع محرك القاعده‬
>?
To update
•
•
<html>
<body>
<table border=0 cellpadding=4 cellspacing=0 width=600>
<?PHP
/*--------------------------------------- /*------------------------------------------- ‫بداية النموذج‬
echo "<form method='post' action='$PHP_SELF'>";
: ‫الحظ في بداية النموذج أننا كتبنا‬action='$PHP_SELF'
‫وتعني أن متغيرات النموذج ترسل لنفس الصفحة‬
echo "<table border='1' width='100%' bordercolor='#000080' cellspacing='1' cellpadding>";
echo "<tr><td width='100%'><p align='center'>Edit The Info </td>";
extract($_GET); // ‫والوارده بهذه الطريقه‬GET ‫استخراج المتغيرات من مصفوفه‬
extract($_POST);
$con=mysql_connect("localhost","root","");
if(!$con){
die('can not connect'.mysql_error());
}
mysql_select_db(mydb,$con);
$query1 = "select * from mytab where id ='$id'";
$result1 = mysql_query($query1);
•
‫ هنا نطبع البيانات داخل مربعات نصوص‬//
while($row = mysql_fetch_object($result1))
• $ ‫جلب النتائج على شكل صف صف ووضعها في المتغير‬row
• {
echo "<td align=middle> First Name <br> <input type=tex
t name='fname' value='$row->Fname'> </td>";
echo "<td align=middle> Last Name <br> <input type=te
xt name='lname' value='$row->Lname'> </td>";
echo "<td align=middle> Age <br> <input type=text na
me='age' value='$row->age'> </td>";
$id = $row->id;
}
echo "</table><p>";
echo "<input type=submit name='update' value='Edit The
Info'></form></tr></table>";
/*--------------------------------------- ------------------- ‫نهاية النموذج‬
/*------------------------
Query and display
•
<?php
$con=mysql_connect("localhost","root",""); //SQL . ‫اإلتصال بـ‬
if(!$con)
{
die('can not connect'.mysql_error());
}
mysql_select_db( mydb , $con ); // ‫دالةتحدد قاعدة البيانات اللي نبي نشتغل عليها‬
$ result = mysql_query("select * from mytab"); // ‫البيانات هنا مخزنه على شكل صفوف وأعمده‬
$ num = mysql_num_rows($result); // )‫دالةتحدد عدد الصفوف(السجالت‬
echo"<table border='1' width='100%' id='table1'>";
$i=0;
while( $i < $num ) {
$id = mysql_result( $result , $i , "id" ); // ‫دالة تجيب لك بيانات حقل معين‬
$ fname = mysql_result( $result , $i , "fname" );
$lname = mysql_result( $result , $i , "lname" );
$age = mysql_result( $result , $i , "age" );
echo"<tr>";
echo"<td width='20%'>$fname </td>";
echo"<td width='20%'>$lname </td>";
echo"<td width='20%'>$age </td>";
echo"<td width='20%'>$id </td>";
echo"<td width='10%'> <a href='edit.php?id=$id'> [Edit] </a> </td> ";
echo"<td width='10%'> <a href='del.php?id=$id'>[delete] </a> </td>";
echo"</tr>";
++$i;
}
echo"</table>";
mysql_close($con); // ‫نهاية التتعامل مع محرك القاعده‬
>?
• extract($_GET);
extract($_POST);
if ($update) { // ‫إذا ضغط المستخدم على الزر‬
if($fname == "" || $lname == "" || $age == "" ) {// ‫إذا‬
‫كان أحد الحقول فارغ ما يكمل‬
die("<b>You left one or more fields blank.</b>");
}
$query2 = "update mytab set fname='$fname', lname
='$lname', age='$age' where id='$id'";
mysql_query($query2);
echo "<b>Your record has been updated</b></p>";
}
mysql_close();
?>
</body>
</html>
Delete code in php
• <?php
extract($_GET);
$con = mysql_connect("localhost","root","");
if(!$con) die('can not connect'.mysql_error());
mysql_select_db(mydb,$con);
$sql="DELETE FROM mytab WHERE id =$id";
mysql_query( $sql , $con );
echo "1 record delete...";
mysql_close($con);
?>
Data anomalies problem
‫مشكلة تكرار البيانات‬
Adding problems : we cant add new department unless it
as employee because the primary key is Empno
Updating and deleting problem : to update the Loc field
from jeddah to riadh for one employee will corapt the
other employee locations
To solve those problems
•
•
•
•
•
•
•
Function dependency FD -
A- B
Means B is depending Functionally on A
I.e A value define B value
Example:
For each empl. Only unique name
For each empl. Only unique dept
•
•
•
•
•
FD1: Empno Ename
FD2: Empno Deptno
We can write it as:
FD1: Empno Ename,Deptno
FD :Functional Dependency
Basic Structure
• Formally, given sets D1, D2, …. Dn a relation r is a subset of
D 1 x D2 x … x Dn
Thus a relation is a set of n-tuples (a1, a2, …, an) where
each ai  Di
• Example: if
customer-name = {Jones, Smith, Curry, Lindsay}
customer-street = {Main, North, Park}
customer-city = {Harrison, Rye, Pittsfield}
Then r  customer-name x customer-street x customer-city
r = { (Jones, Main, Harrison),
(Smith, North, Rye),
(Curry, North, Rye),
(Lindsay, Park, Pittsfield)}
is a relation over customer-name x customer-street x customer-city
Attribute Types
• Each attribute of a relation has a name
• The set of allowed values for each attribute is called
the domain of the attribute
• Attribute values are (normally) required to be atomic,
that is, indivisible
– E.g. multivalued attribute values are not atomic
– E.g. composite attribute values are not atomic
• The special value null is a member of every domain
• The null value causes complications in the definition of
many operations
– we shall ignore the effect of null values in our main
presentation and consider their effect later
Relation Schema
• A1, A2, …, An are attributes
• R = (A1, A2, …, An ) is a relation schema
E.g. Customer-schema =
(customer-name, customer-street,
customer-city)
• r(R) is a relation on the relation schema R
E.g. customer (Customer-schema)
Relation Instance
• The current values (relation instance) of a
relation are specified by a table
• An element t of r is a tuple, represented by a
attributes
row in a table
(or columns)
customer-name
customer-street
customer-city
Jones
Smith
Curry
Lindsay
Main
North
North
Park
Harrison
Rye
Rye
Pittsfield
customer
tuples
(or rows)
Determining Keys from E-R Sets
• Strong entity set. The primary key of the entity set
becomes the primary key of the relation.
• Weak entity set. The primary key of the relation consists of
the union of the primary key of the strong entity set and
the discriminator of the weak entity set.
• Relationship set. The union of the primary keys of the
related entity sets becomes a super key of the relation.
– For binary many-to-one relationship sets, the primary key of the
“many” entity set becomes the relation’s primary key.
– For one-to-one relationship sets, the relation’s primary key can
be that of either entity set.
– For many-to-many relationship sets, the union of the primary
keys becomes the relation’s primary key
Schema Diagram for the Banking Enterprise
Query Languages
• Language in which user requests information from the
database.
• Categories of languages
– procedural
– non-procedural
• “Pure” languages:
– Relational Algebra
– Tuple Relational Calculus
– Domain Relational Calculus
• Pure languages form underlying basis of query
languages that people use.
Relational Algebra
• Procedural language
• Six basic operators
–
–
–
–
–
–
select
project
union
set difference
Cartesian product
rename
• The operators take two or more relations as
inputs and give a new relation as a result.
Select Operation – Example
• Relation r
A
B
C
D
1
7
5
7
12
3
23 10
• σA=B ^ D > 5 (r)
A
B
C
D
1
7
23 10
Select Operation
• Notation:  p(r)
• p is called the selection predicate ‫االختيار المبنى عليه‬
• Defined as:
p(r) = {t | t  r and p(t)}
Where p is a formula in propositional calculus
consisting of terms connected by :  (and),  (or), 
(not)
Each term is one of:
<attribute> op
<attribute> or
<constant>
where op is one of: =, , >, . <. 
• Example of selection:
 branch-name=“Perryridge”(account)
• Convert the following erd into data table?
Download