JPA - Gelişmiş Eşlemeler
JPA, java spesifikasyonu ile yayınlanan bir kütüphanedir. Bu nedenle, varlık kalıcılığı için tüm nesne yönelimli kavramları destekler. Şimdiye kadar nesne ilişkisel haritalamanın temellerini bitirdik. Bu bölüm sizi nesneler ve ilişkisel varlıklar arasındaki gelişmiş eşlemelere götürür.
Kalıtım Stratejileri
Kalıtım, nesne yönelimli dilin temel kavramıdır, bu nedenle varlıklar arasındaki kalıtım ilişkilerini veya stratejileri kullanabiliriz. JPA, SINGLE_TABLE, JOINED_TABLE ve TABLE_PER_CONCRETE_CLASS gibi üç tür miras stratejisini destekler.
Staff, TeachingStaff, NonTeachingStaff sınıflarını ve bunların ilişkilerini aşağıdaki gibi ele alalım:
Yukarıda gösterilen diyagramda Personel bir varlıktır ve Öğretim Görevlisi ve Eğitim Personeli Olmayan Personel, Personelin alt birimleridir. Burada, kalıtımın her üç stratejisinde de yukarıdaki örneği tartışacağız.
Tek Tablo stratejisi
Tek Tablo stratejisi, tüm sınıf alanlarını (hem süper hem de alt sınıflar) alır ve bunları SINGLE_TABLE stratejisi olarak bilinen tek bir tabloya eşler. Burada ayırt edici değer, bir tablodaki üç varlığın değerlerini farklılaştırmada anahtar rol oynar.
Yukarıdaki örneği ele alalım, TeachingStaff ve NonTeachingStaff, Personel sınıfının alt sınıflarıdır. Kalıtım kavramını hatırlatın (süper sınıfın özelliklerini alt sınıfa göre miras alma mekanizmasıdır) ve bu nedenle sid, sname, hem TeachingStaff hem de NonTeachingStaff'a ait alanlardır. Bir JPA projesi oluşturun. Bu projenin tüm modülleri aşağıdaki gibidir:
Varlıklar Oluşturma
Adlı bir paket oluşturun ‘com.tutorialspoint.eclipselink.entity’ altında ‘src’paketi. Adlı yeni bir java sınıfı oluşturunStaff.javaverilen paket altında. Personel varlık sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import java.io.Serializable;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table
@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
@DiscriminatorColumn( name = "type" )
public class Staff implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private int sid;
private String sname;
public Staff( int sid, String sname ) {
super( );
this.sid = sid;
this.sname = sname;
}
public Staff( ) {
super( );
}
public int getSid( ) {
return sid;
}
public void setSid( int sid ) {
this.sid = sid;
}
public String getSname( ) {
return sname;
}
public void setSname( String sname ) {
this.sname = sname;
}
}
Yukarıdaki kodda @DescriminatorColumn alan adını belirtir (type) ve değerleri kalan (Öğretim ve Eğitim Olmayan Personel) alanlarını gösterir.
Adlı Personel sınıfına bir alt sınıf (sınıf) oluşturun TeachingStaff.java altında com.tutorialspoint.eclipselink.entitypaketi. TeachingStaff Varlık sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue( value="TS" )
public class TeachingStaff extends Staff {
private String qualification;
private String subjectexpertise;
public TeachingStaff( int sid, String sname,
String qualification,String subjectexpertise ) {
super( sid, sname );
this.qualification = qualification;
this.subjectexpertise = subjectexpertise;
}
public TeachingStaff( ) {
super( );
}
public String getQualification( ){
return qualification;
}
public void setQualification( String qualification ){
this.qualification = qualification;
}
public String getSubjectexpertise( ) {
return subjectexpertise;
}
public void setSubjectexpertise( String subjectexpertise ){
this.subjectexpertise = subjectexpertise;
}
}
Adlı Personel sınıfına bir alt sınıf (sınıf) oluşturun NonTeachingStaff.java altında com.tutorialspoint.eclipselink.entitypaketi. NonTeachingStaff Entity sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue( value = "NS" )
public class NonTeachingStaff extends Staff {
private String areaexpertise;
public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
super( sid, sname );
this.areaexpertise = areaexpertise;
}
public NonTeachingStaff( ) {
super( );
}
public String getAreaexpertise( ) {
return areaexpertise;
}
public void setAreaexpertise( String areaexpertise ){
this.areaexpertise = areaexpertise;
}
}
Persistence.xml
Persistence.xml dosyası, veritabanının yapılandırma bilgilerini ve varlık sınıflarının kayıt bilgilerini içerir. Xml dosyası aşağıdaki gibi gösterilir:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL">
<class>com.tutorialspoint.eclipselink.entity.Staff</class>
<class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
<class>com.tutorialspoint.eclipselink.entity.TeachingStaff</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="eclipselink.logging.level" value="FINE"/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
Hizmet sınıfı
Hizmet sınıfları, iş bileşeninin uygulama kısmıdır. Altında bir paket oluşturun‘src’ paket adı ‘com.tutorialspoint.eclipselink.service’.
Staff, TeachingStaff ve NonTeachingStaff sınıf alanlarını depolamak için verilen paketin altında SaveClient.java adlı bir sınıf oluşturun. SaveClient sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.service;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;
public class SaveClient {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
//Teaching staff entity
TeachingStaff ts1=new TeachingStaff(1,"Gopal","MSc MEd","Maths");
TeachingStaff ts2=new TeachingStaff(2, "Manisha", "BSc BEd", "English");
//Non-Teaching Staff entity
NonTeachingStaff nts1=new NonTeachingStaff(3, "Satish", "Accounts");
NonTeachingStaff nts2=new NonTeachingStaff(4, "Krishna", "Office Admin");
//storing all entities
entitymanager.persist(ts1);
entitymanager.persist(ts2);
entitymanager.persist(nts1);
entitymanager.persist(nts2);
entitymanager.getTransaction().commit();
entitymanager.close();
emfactory.close();
}
}
Yukarıdaki programı derledikten ve çalıştırdıktan sonra Eclipse IDE'nin konsol panelinde bildirimler alacaksınız. Çıktı için MySQL çalışma tezgahını kontrol edin. Tablo formatında çıktı aşağıdaki gibi gösterilir:
Sid | Tür | Adı | Alan uzmanlığı | Vasıf | Konu uzmanlığı |
---|---|---|---|---|---|
1 | TS | Gopal | MSC MED | Matematik | |
2 | TS | Manisha | BSC YATAK | ingilizce | |
3 | NS | Satish | Hesaplar | ||
4 | NS | Krishna | Ofis Yöneticisi |
Son olarak, üç sınıfın tüm alanlarını içeren ve adlı ayırıcı sütun ile farklılık gösteren tek bir tablo alacaksınız. ‘Type’ (alan).
Birleştirilmiş tablo Stratejisi
Birleştirilmiş tablo stratejisi, tabloya katılmak ve işlemleri kolaylaştırmak için benzersiz değerler içeren referanslı sütunu paylaşmaktır. Yukarıdaki ile aynı örneği ele alalım.
Bir JPA Projesi oluşturun. Aşağıda gösterilen tüm proje modülleri:
Varlıklar Oluşturma
Adlı bir paket oluşturun ‘com.tutorialspoint.eclipselink.entity’ altında ‘src’paketi. Adlı yeni bir java sınıfı oluşturunStaff.javaverilen paket altında. Personel varlık sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table
@Inheritance( strategy = InheritanceType.JOINED )
public class Staff implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private int sid;
private String sname;
public Staff( int sid, String sname ) {
super( );
this.sid = sid;
this.sname = sname;
}
public Staff( ) {
super( );
}
public int getSid( ) {
return sid;
}
public void setSid( int sid ) {
this.sid = sid;
}
public String getSname( ) {
return sname;
}
public void setSname( String sname ) {
this.sname = sname;
}
}
Adlı Personel sınıfına bir alt sınıf (sınıf) oluşturun TeachingStaff.java altında com.tutorialspoint.eclipselink.entitypaketi. TeachingStaff Varlık sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="sid")
public class TeachingStaff extends Staff {
private String qualification;
private String subjectexpertise;
public TeachingStaff( int sid, String sname,
String qualification,String subjectexpertise ) {
super( sid, sname );
this.qualification = qualification;
this.subjectexpertise = subjectexpertise;
}
public TeachingStaff( ) {
super( );
}
public String getQualification( ){
return qualification;
}
public void setQualification( String qualification ){
this.qualification = qualification;
}
public String getSubjectexpertise( ) {
return subjectexpertise;
}
public void setSubjectexpertise( String subjectexpertise ){
this.subjectexpertise = subjectexpertise;
}
}
Adlı Personel sınıfına bir alt sınıf (sınıf) oluşturun NonTeachingStaff.java altında com.tutorialspoint.eclipselink.entitypaketi. NonTeachingStaff Entity sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="sid")
public class NonTeachingStaff extends Staff {
private String areaexpertise;
public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
super( sid, sname );
this.areaexpertise = areaexpertise;
}
public NonTeachingStaff( ) {
super( );
}
public String getAreaexpertise( ) {
return areaexpertise;
}
public void setAreaexpertise( String areaexpertise ) {
this.areaexpertise = areaexpertise;
}
}
Persistence.xml
Persistence.xml dosyası, veritabanının yapılandırma bilgilerini ve varlık sınıflarının kayıt bilgilerini içerir. Xml dosyası aşağıdaki gibi gösterilir:
<?xml version = "1.0" encoding = "UTF-8"?>
<persistence version = "2.0" xmlns = "http://java.sun.com/xml/ns/persistence"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name = "Eclipselink_JPA" transaction-type = "RESOURCE_LOCAL">
<class>com.tutorialspoint.eclipselink.entity.Staff</class>
<class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
<class>com.tutorialspoint.eclipselink.entity.TeachingStaff</class>
<properties>
<property name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/jpadb"/>
<property name = "javax.persistence.jdbc.user" value = "root"/>
<property name = "javax.persistence.jdbc.password" value = "root"/>
<property name = "javax.persistence.jdbc.driver" value = "com.mysql.jdbc.Driver"/>
<property name = "eclipselink.logging.level" value = "FINE"/>
<property name = "eclipselink.ddl-generation" value = "create-tables"/>
</properties>
</persistence-unit>
</persistence>
Hizmet sınıfı
Hizmet sınıfları, iş bileşeninin uygulama kısmıdır. Altında bir paket oluşturun‘src’ paket adı ‘com.tutorialspoint.eclipselink.service’.
Staff, TeachingStaff ve NonTeachingStaff sınıf alanlarını depolamak için verilen paketin altında SaveClient.java adlı bir sınıf oluşturun. Ardından SaveClient sınıfı aşağıdaki gibi:
package com.tutorialspoint.eclipselink.service;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;
public class SaveClient {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
//Teaching staff entity
TeachingStaff ts1 = new TeachingStaff(1,"Gopal","MSc MEd","Maths");
TeachingStaff ts2 = new TeachingStaff(2, "Manisha", "BSc BEd", "English");
//Non-Teaching Staff entity
NonTeachingStaff nts1 = new NonTeachingStaff(3, "Satish", "Accounts");
NonTeachingStaff nts2 = new NonTeachingStaff(4, "Krishna", "Office Admin");
//storing all entities
entitymanager.persist(ts1);
entitymanager.persist(ts2);
entitymanager.persist(nts1);
entitymanager.persist(nts2);
entitymanager.getTransaction().commit();
entitymanager.close();
emfactory.close();
}
}
Yukarıdaki programı derledikten ve çalıştırdıktan sonra Eclipse IDE'nin konsol panelinde bildirimler alacaksınız. Çıktı için MySQL çalışma tezgahını aşağıdaki gibi kontrol edin:
Burada üç tablo oluşturulur ve sonucu staff tablo biçiminde tablo aşağıdaki gibi gösterilir:
Sid | Dtype | Adı |
---|---|---|
1 | Öğretim Üyesi | Gopal |
2 | Öğretim Üyesi | Manisha |
3 | Öğretim Üyesi Olmayan | Satish |
4 | Öğretim Üyesi Olmayan | Krishna |
Sonucu TeachingStaff tablo biçiminde tablo aşağıdaki gibi gösterilir:
Sid | Vasıf | Konu uzmanlığı |
---|---|---|
1 | MSC MED | Matematik |
2 | BSC YATAK | ingilizce |
Yukarıdaki tabloda sid yabancı anahtardır (referans alanı formu personel tablosu) NonTeachingStaff tablo biçiminde tablo aşağıdaki gibi gösterilir:
Sid | Alan uzmanlığı |
---|---|
3 | Hesaplar |
4 | Ofis Yöneticisi |
Son olarak, üç tablo sırasıyla alanları kullanılarak oluşturulur ve SID alanı üç tablonun tümü tarafından paylaşılır. Personel tablosunda SID birincil anahtardır, kalan (TeachingStaff ve NonTeachingStaff) tablolarında SID yabancı anahtardır.
Sınıf stratejisi başına tablo
Sınıf stratejisi başına tablo, her alt varlık için bir tablo oluşturmaktır. Personel tablosu oluşturulacak ancak boş kayıtlar içerecektir. Staff tablosunun alan değerleri, TeachingStaff ve NonTeachingStaff tabloları tarafından paylaşılmalıdır.
Yukarıdaki ile aynı örneği ele alalım. Bu projenin tüm modülleri aşağıdaki şekilde gösterilmektedir:
Varlıklar Oluşturma
Adlı bir paket oluşturun ‘com.tutorialspoint.eclipselink.entity’ altında ‘src’paketi. Adlı yeni bir java sınıfı oluşturunStaff.javaverilen paket altında. Personel varlık sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table
@Inheritance( strategy = InheritanceType.TABLE_PER_CLASS )
public class Staff implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private int sid;
private String sname;
public Staff( int sid, String sname ) {
super( );
this.sid = sid;
this.sname = sname;
}
public Staff( ) {
super( );
}
public int getSid( ) {
return sid;
}
public void setSid( int sid ) {
this.sid = sid;
}
public String getSname( ) {
return sname;
}
public void setSname( String sname ) {
this.sname = sname;
}
}
Adlı Personel sınıfına bir alt sınıf (sınıf) oluşturun TeachingStaff.java altında com.tutorialspoint.eclipselink.entitypaketi. TeachingStaff Varlık sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
public class TeachingStaff extends Staff {
private String qualification;
private String subjectexpertise;
public TeachingStaff( int sid, String sname, String qualification, String subjectexpertise ) {
super( sid, sname );
this.qualification = qualification;
this.subjectexpertise = subjectexpertise;
}
public TeachingStaff( ) {
super( );
}
public String getQualification( ){
return qualification;
}
public void setQualification( String qualification ) {
this.qualification = qualification;
}
public String getSubjectexpertise( ) {
return subjectexpertise;
}
public void setSubjectexpertise( String subjectexpertise ){
this.subjectexpertise = subjectexpertise;
}
}
Adlı Personel sınıfına bir alt sınıf (sınıf) oluşturun NonTeachingStaff.java altında com.tutorialspoint.eclipselink.entitypaketi. NonTeachingStaff Entity sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
public class NonTeachingStaff extends Staff {
private String areaexpertise;
public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
super( sid, sname );
this.areaexpertise = areaexpertise;
}
public NonTeachingStaff( ) {
super( );
}
public String getAreaexpertise( ) {
return areaexpertise;
}
public void setAreaexpertise( String areaexpertise ) {
this.areaexpertise = areaexpertise;
}
}
Persistence.xml
Persistence.xml dosyası, veritabanının yapılandırma bilgilerini ve varlık sınıflarının kayıt bilgilerini içerir. Xml dosyası aşağıdaki gibi gösterilir:
<?xml version="1.0" encoding = "UTF-8"?>
<persistence version = "2.0" xmlns = "http://java.sun.com/xml/ns/persistence"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name = "Eclipselink_JPA" transaction-type = "RESOURCE_LOCAL">
<class>com.tutorialspoint.eclipselink.entity.Staff</class>
<class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
<class>com.tutorialspoint.eclipselink.entity.TeachingStaff</class>
<properties>
<property name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/jpadb"/>
<property name = "javax.persistence.jdbc.user" value = "root"/>
<property name = "javax.persistence.jdbc.password" value = "root"/>
<property name = "javax.persistence.jdbc.driver" value = "com.mysql.jdbc.Driver"/>
<property name = "eclipselink.logging.level" value = "FINE"/>
<property name = "eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
Hizmet sınıfı
Hizmet sınıfları, iş bileşeninin uygulama kısmıdır. Altında bir paket oluşturun‘src’ paket adı ‘com.tutorialspoint.eclipselink.service’.
Adlı bir sınıf oluşturun SaveClient.javaStaff, TeachingStaff ve NonTeachingStaff sınıf alanlarını depolamak için verilen paketin altında. SaveClient sınıfı aşağıdaki gibi gösterilir:
package com.tutorialspoint.eclipselink.service;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;
public class SaveClient {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
//Teaching staff entity
TeachingStaff ts1 = new TeachingStaff(1,"Gopal","MSc MEd","Maths");
TeachingStaff ts2 = new TeachingStaff(2, "Manisha", "BSc BEd", "English");
//Non-Teaching Staff entity
NonTeachingStaff nts1 = new NonTeachingStaff(3, "Satish", "Accounts");
NonTeachingStaff nts2 = new NonTeachingStaff(4, "Krishna", "Office Admin");
//storing all entities
entitymanager.persist(ts1);
entitymanager.persist(ts2);
entitymanager.persist(nts1);
entitymanager.persist(nts2);
entitymanager.getTransaction().commit();
entitymanager.close();
emfactory.close();
}
}
Yukarıdaki programı derledikten ve çalıştırdıktan sonra Eclipse IDE'nin konsol panelinde bildirimler alacaksınız. Çıktı için MySQL çalışma tezgahını aşağıdaki gibi kontrol edin:
Burada üç tablo oluşturulur ve Staff tablo boş kayıtlar içeriyor.
Sonucu TeachingStaff tablo biçiminde aşağıdaki gibi gösterilir:
Sid | Vasıf | Adı | Konu uzmanlığı |
---|---|---|---|
1 | MSC MED | Gopal | Matematik |
2 | BSC YATAK | Manisha | ingilizce |
Yukarıdaki tablo TeachingStaff hem Personel hem de Öğretim Personeli Varlıklarının alanlarını içerir.
Sonucu NonTeachingStaff tablo biçiminde aşağıdaki gibi gösterilir:
Sid | Alan uzmanlığı | Adı |
---|---|---|
3 | Hesaplar | Satish |
4 | Ofis Yöneticisi | Krishna |
Yukarıdaki NonTeachingStaff tablosu, hem Staff hem de NonTeachingStaff Varlıklarının alanlarını içerir.