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?