The document provides guidelines for database design, including naming conventions and best practices. It recommends using consistent naming conventions to avoid issues later on. Key points include:
- Use camelCase and avoid special characters for names. Prefix table names with unique identifiers.
- Primary keys should be named {TablePrefix}OID and foreign keys should match the primary key name in the referenced table.
- Attribute names should be self-explanatory like Invoices.InvIsPrinted rather than ambiguous names.
- Consistent naming conventions are important for maintenance and analyzing data across the whole system.
The document discusses object-relational mapping and describes the default mappings for various entity relationships like one-to-one, one-to-many, and many-to-many. It provides an example of mapping a banking domain model with Customer, Account, Address, and Referee entities to a relational database using JPA annotations and default conventions.
The document provides guidance for merchants on creating effective product datafeeds for affiliates. It recommends using a tab-delimited text file format and including key product information like SKU, name, description, price, images and categories. The datafeed should be delivered via FTP, HTTP download and web service ideally on a reliable daily schedule. Additional tips include using consistent IDs, handling sales data, and considering advanced filtering options for categories. Affiliates would benefit from clear documentation on the datafeed structure and delivery options.
Hello Sir
We are a premier academic writing agency with industry partners in UK, Australia and Middle East and over 15 years of experience. We are looking to establish long-term relationships with industry partners and would love to discuss this opportunity further with you.
Thanks & Regards
visit our website.
www.onlineassignmenthelp.com.au
www.freeassignmenthelp.com
www.btechndassignment.cheapassignmenthelp.co.uk
www.cheapassignmenthelp.com
www.cheapassignmenthelp.co.uk/
ServicePilot ISM Express Datasheet [EN]ServicePilot
This document describes ServicePilot ISM Express, a network and server monitoring solution. Some key points:
- ISM Express provides unified performance, fault, and service level management through an integrated and scalable platform. It helps ensure the health and availability of business services.
- The solution is easy to deploy, use, and integrate with other products. It can begin providing benefits within hours of deployment and supports pre-defined technologies out of the box.
- ISM Express provides essential monitoring, reporting
ServicePilot NBA for z/OS Datasheet [EN]ServicePilot
ServicePilot NBA for z/OS is a solution that provides end-to-end visibility of application performance and dependencies on IBM mainframe systems. It monitors in real-time across LPARs with a single login, and generates reports to quickly identify and resolve issues. The tool pinpoints specific users and activities to determine causes of problems. It also detects security threats and unauthorized access through deep packet inspection and user-defined rules.
ServicePilot ISM Enterprise Datasheet [EN]ServicePilot
ISM Enterprise is an integrated service management platform that provides unified performance, availability, and service level management across networks, servers, applications, databases, and more. It simplifies infrastructure management and reduces costs. Key benefits include ensuring optimal infrastructure performance to support business needs, simplifying management through an easy-to-use interface, and providing reporting for service level agreements and capacity planning. The solution supports hundreds of technologies out-of-the-box and can scale from 150 to hundreds of thousands of devices.
The document discusses object-relational mapping and describes the default mappings for various entity relationships like one-to-one, one-to-many, and many-to-many. It provides an example of mapping a banking domain model with Customer, Account, Address, and Referee entities to a relational database using JPA annotations and default conventions.
The document provides guidance for merchants on creating effective product datafeeds for affiliates. It recommends using a tab-delimited text file format and including key product information like SKU, name, description, price, images and categories. The datafeed should be delivered via FTP, HTTP download and web service ideally on a reliable daily schedule. Additional tips include using consistent IDs, handling sales data, and considering advanced filtering options for categories. Affiliates would benefit from clear documentation on the datafeed structure and delivery options.
Hello Sir
We are a premier academic writing agency with industry partners in UK, Australia and Middle East and over 15 years of experience. We are looking to establish long-term relationships with industry partners and would love to discuss this opportunity further with you.
Thanks & Regards
visit our website.
www.onlineassignmenthelp.com.au
www.freeassignmenthelp.com
www.btechndassignment.cheapassignmenthelp.co.uk
www.cheapassignmenthelp.com
www.cheapassignmenthelp.co.uk/
ServicePilot ISM Express Datasheet [EN]ServicePilot
This document describes ServicePilot ISM Express, a network and server monitoring solution. Some key points:
- ISM Express provides unified performance, fault, and service level management through an integrated and scalable platform. It helps ensure the health and availability of business services.
- The solution is easy to deploy, use, and integrate with other products. It can begin providing benefits within hours of deployment and supports pre-defined technologies out of the box.
- ISM Express provides essential monitoring, reporting
ServicePilot NBA for z/OS Datasheet [EN]ServicePilot
ServicePilot NBA for z/OS is a solution that provides end-to-end visibility of application performance and dependencies on IBM mainframe systems. It monitors in real-time across LPARs with a single login, and generates reports to quickly identify and resolve issues. The tool pinpoints specific users and activities to determine causes of problems. It also detects security threats and unauthorized access through deep packet inspection and user-defined rules.
ServicePilot ISM Enterprise Datasheet [EN]ServicePilot
ISM Enterprise is an integrated service management platform that provides unified performance, availability, and service level management across networks, servers, applications, databases, and more. It simplifies infrastructure management and reduces costs. Key benefits include ensuring optimal infrastructure performance to support business needs, simplifying management through an easy-to-use interface, and providing reporting for service level agreements and capacity planning. The solution supports hundreds of technologies out-of-the-box and can scale from 150 to hundreds of thousands of devices.
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...Massimo Cenci
The descriptions management, is a subject little discussed within the Data Warehouse and Business Intelligence community. It speaks little in books and articles, although it is a crucial issue because it affects the way we see the information.
So, we'll talk about descriptions. In particular, the descriptions of the codes that we can found in the dimension tables of a Data Warehouse.
Get a Little Help with Your Help Desk ApplicationIron Speed
The document discusses how to build a help desk application using Iron Speed Designer by first preparing the database schema through normalization, using proper data types and field names, declaring primary and foreign keys, and then using the Application Wizard in Iron Speed Designer to generate pages and functionality from the database. Tips are provided such as adding formulas, audit fields, and usability features to enhance the generated application.
The document discusses features of object identity, the role of OIDs, value and type constructors, and provides examples of valid time tables, transaction time tables, and bitemporal tables. It also discusses creating tables with employee data and calculating salaries, and compares intelligent databases with temporal databases.
This document outlines an agenda for a talk titled "AD505 DevBlast – 30 LotusScript Tips". The talk aims to provide 30 LotusScript tips organized into three sections: Nursery Slopes (10 fundamental tips), Everyday Tips (10 less well known tips), and Advanced Tips (10 tips to provoke thought). The introduction provides background on the speaker and explains the goal of sharing 30 tips using the "Lazy Programmer" methodology of breaking problems into manageable pieces.
Planning is the most important aspect of database design. Before using tools, planners should verify requirements, diagram data, and plan the database design on paper. This results in databases that meet requirements and expectations. When designing, planners aim to minimize data redundancy without losing information. They also seek to avoid anomalies like insertion, deletion, and update anomalies. Relational databases can provide flexibility over single-table designs by reducing redundancy and anomalies through normalization.
Meaningful variable and function names are important for clean code. Names should clearly indicate what the variable or function represents. Names like "temp", "x", or "flag" should generally be avoided as they do not convey purpose. Instead, names should be searchable and pronounceable terms from the problem domain. Additional context can be added through classes, namespaces, or prefixes if needed. Names of a moderate length, between 8-20 characters on average, tend to balance readability and understandability.
AimTo give you practical experience in database modelling, no.docxsimonlbentley59018
Aim:
To give you practical experience in database modelling, normalization and writing SQL statements to query a relational database
Assignment Summary:
The project specification details provided in this document and you must use only given specifications to come up with your solution. Make appropriate assumptions where ever required.
Please make sure that your group must meet your lecturer/tutor at least twice to update the progress of your assignment.
Background Information for Sample Database Project:
Australian Manufacturing Company (AMC) requires a database system to manage their stores, employees, products, suppliers, patrons and orders.
The following information has been gathered about current business activities of AMC.
AMC has many stores in different cities across Australia. Each store has unique store number and other details like name, contact details (phone number, email address and fax number) and location details (postal address composed of street number, suburb, state and postcode).
There are many departments within each store, for example, HR, accounts, finance and sales etc. each department is uniquely identified by department number. AMC also records department title, phone number and email address.
Each store has a number of employees. Each department is supervised by a department supervisor and each store is managed by a store manager who both are employees of AMC. Each department has a single supervisor only i.e. the department supervisor is also the supervisor for all the employees work within that department.
Each employee is referenced by unique employee number, name (first and last names), address, mobile number, email, TFN, salary and joining date. An employee’s salary is recorded differently as per his or her employment type. Employees can be employed as fulltime or casual basis. For a fulltime staff, annual salary is recorded and hourly rate for a casual staff.
Each store creates payslips for all employees work in that store on a weekly basis. As a minimum payslip number, no of hours worked, employee detail, store detail and gross pay are recorded.
AMC sales different products like fashion, health, beauty, electronics etc. Each product is characterised by product number, name, brand, description and price.
Each product can be supplied by one or more supplier and each supplier can supply one or many products. AMC also keeps appropriate details of their suppliers.
Each store maintains an inventory of their products available for sale. The quantity of each product available in store and the quantity ordered are kept.
AMC patron visits the store and shops in the store. Each customer is characterised by customer number, name (first and last names), mobile number and address.
A patron may place orders. An order contains one or many products at a time. A store keeps track of order number, order date, product(s) ordered and quantity ordered for each product.
2 | P a g e
The proprietors of AMC have ap.
Susan Whitfield completed a 13-week SQL Server 2008 certification program through SetFocus, LLC. The intensive course covered database administration, development, and used tools like SQL Server Management Studio. Susan's presentation includes examples from projects building databases, writing T-SQL code, and creating packages, reports, and diagrams. She is looking for SQL-related work and can be contacted at the provided email.
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...Massimo Cenci
The naming convention is a key component of any IT project.
The purpose of this article is to suggest a standard for a practical and effective Data Warehouse design in Oracle environment
The document discusses various aspects of dimension and fact table design in a data warehouse. It explains that dimension tables contain keys, attributes for pivoting in analysis, member properties for labels in reports, and lineage columns for auditing. Fact tables contain measures, foreign keys to dimensions, and sometimes surrogate keys. Measures can be additive, semi-additive, or non-additive depending on whether they can be accurately summed over different dimensions like time.
The document discusses various aspects of dimension and fact table design in a data warehouse. It explains that dimension tables contain keys, attributes for pivoting in analysis, member properties for labels in reports, and lineage columns for auditing. Fact tables contain measures, foreign keys to dimensions, and sometimes surrogate keys. Measures can be additive, semi-additive, or non-additive depending on whether they can be accurately summed over different dimensions like time. Many-to-many relationships require an intermediate dimension table.
The document provides an overview of JavaScript for a beginner audience. It discusses what JavaScript is, why it is used, examples of its capabilities, and how to write JavaScript code. The session will demonstrate JavaScript capabilities, explain code samples, and answer questions. JavaScript allows dynamic functionality on web pages by manipulating the browser and document object model (DOM).
This document outlines an agenda for a talk on 30 LotusScript tips. It begins with an introduction that explains the structure of the talk and why it will cover 30 tips. The agenda is then broken into sections on fundamental tips ("Nursery Slopes"), less well known everyday tips, and more advanced tips to provoke thought. Each section provides 10 tips on topics like using Option Declare, templates and versions, error handling, classes, and performance coding. The document aims to share a variety of LotusScript best practices and techniques.
This document introduces relational databases and their components. Relational databases address issues with flat files like data redundancy and integrity. A relational database uses tables to store entities (things) and their attributes (characteristics). Tables can be related through primary and foreign keys to link related data while avoiding redundancy. This improves data integrity and maintenance compared to flat files.
A relational database organizes data into tables with rows and columns. Each table contains records about a type of entity, with columns representing attributes. Unique identifiers called primary keys are used to link tables together through foreign keys, allowing efficient storage and retrieval of related data. Validation rules can be set on fields to ensure accurate data entry. Relational databases provide benefits like reduced data redundancy, improved data integrity, and easier querying of information.
This document provides a tutorial for setting up a many-to-many relationship in Rails. It describes creating Expense and Tag models with a join table, generating scaffolds, and customizing views and controllers to display tags as checkboxes for selection when creating or editing an expense. The controller is updated to handle the tag selections by finding Tag objects by ID and associating them with the expense on create/update.
This document provides a tutorial for setting up a many-to-many relationship in Rails. It describes creating Expense and Tag models with a join table, generating scaffolds, and customizing views and controllers to display tags as checkboxes for selection when creating or editing an expense. The controller is updated to handle the tag selections by finding Tag objects by ID and associating them with the expense on create/update.
Difference between fact tables and dimension tablesKamran Haider
The document discusses the differences between fact tables and dimension tables in a data warehouse. It also discusses surrogate keys, natural keys, and why surrogate keys are used in data warehouses. Specifically:
- Fact tables contain measures/facts and foreign keys, while dimension tables contain descriptive attributes. Surrogate keys are integers assigned sequentially in dimension tables to join with fact tables.
- Surrogate keys are used instead of natural keys for faster joins, better performance, and to integrate heterogeneous data sources. They allow maintaining historical and current data when natural keys may change over time.
- The document outlines advantages like performance and disadvantages like unnecessary burden during ETL of using surrogate keys versus natural keys which have business meaning but can impact performance
Physical storage in databases involves tables, views, and data types. Tables store data in rows and columns and are made up of columns with assigned data types. Views allow you to display data from tables in different ways. Common data types include numeric, string, date/time, and binary types that determine what values a column can store.
This document provides a tutorial for setting up a many-to-many relationship in a Rails application. It describes creating Expense and Tag models with a joining ExpensesTags table. It details the necessary code for the models, views, and controller to associate expenses with multiple tags. Users can select multiple tags when creating or editing an expense, which are stored in the joining table. The tutorial concludes by demonstrating adding an expense with multiple tags and viewing the associated data.
Teks tersebut menjelaskan arsitektur komputer sederhana bernama SAP-1. SAP-1 dirancang untuk mendemonstrasikan operasi dasar komputer dengan arsitektur yang sederhana untuk mudah dipahami. SAP-1 menggunakan register, memori, dan blok logika untuk menjalankan instruksi seperti penjumlahan dan pengurangan.
Recipes 10 of Data Warehouse and Business Intelligence - The descriptions man...Massimo Cenci
The descriptions management, is a subject little discussed within the Data Warehouse and Business Intelligence community. It speaks little in books and articles, although it is a crucial issue because it affects the way we see the information.
So, we'll talk about descriptions. In particular, the descriptions of the codes that we can found in the dimension tables of a Data Warehouse.
Get a Little Help with Your Help Desk ApplicationIron Speed
The document discusses how to build a help desk application using Iron Speed Designer by first preparing the database schema through normalization, using proper data types and field names, declaring primary and foreign keys, and then using the Application Wizard in Iron Speed Designer to generate pages and functionality from the database. Tips are provided such as adding formulas, audit fields, and usability features to enhance the generated application.
The document discusses features of object identity, the role of OIDs, value and type constructors, and provides examples of valid time tables, transaction time tables, and bitemporal tables. It also discusses creating tables with employee data and calculating salaries, and compares intelligent databases with temporal databases.
This document outlines an agenda for a talk titled "AD505 DevBlast – 30 LotusScript Tips". The talk aims to provide 30 LotusScript tips organized into three sections: Nursery Slopes (10 fundamental tips), Everyday Tips (10 less well known tips), and Advanced Tips (10 tips to provoke thought). The introduction provides background on the speaker and explains the goal of sharing 30 tips using the "Lazy Programmer" methodology of breaking problems into manageable pieces.
Planning is the most important aspect of database design. Before using tools, planners should verify requirements, diagram data, and plan the database design on paper. This results in databases that meet requirements and expectations. When designing, planners aim to minimize data redundancy without losing information. They also seek to avoid anomalies like insertion, deletion, and update anomalies. Relational databases can provide flexibility over single-table designs by reducing redundancy and anomalies through normalization.
Meaningful variable and function names are important for clean code. Names should clearly indicate what the variable or function represents. Names like "temp", "x", or "flag" should generally be avoided as they do not convey purpose. Instead, names should be searchable and pronounceable terms from the problem domain. Additional context can be added through classes, namespaces, or prefixes if needed. Names of a moderate length, between 8-20 characters on average, tend to balance readability and understandability.
AimTo give you practical experience in database modelling, no.docxsimonlbentley59018
Aim:
To give you practical experience in database modelling, normalization and writing SQL statements to query a relational database
Assignment Summary:
The project specification details provided in this document and you must use only given specifications to come up with your solution. Make appropriate assumptions where ever required.
Please make sure that your group must meet your lecturer/tutor at least twice to update the progress of your assignment.
Background Information for Sample Database Project:
Australian Manufacturing Company (AMC) requires a database system to manage their stores, employees, products, suppliers, patrons and orders.
The following information has been gathered about current business activities of AMC.
AMC has many stores in different cities across Australia. Each store has unique store number and other details like name, contact details (phone number, email address and fax number) and location details (postal address composed of street number, suburb, state and postcode).
There are many departments within each store, for example, HR, accounts, finance and sales etc. each department is uniquely identified by department number. AMC also records department title, phone number and email address.
Each store has a number of employees. Each department is supervised by a department supervisor and each store is managed by a store manager who both are employees of AMC. Each department has a single supervisor only i.e. the department supervisor is also the supervisor for all the employees work within that department.
Each employee is referenced by unique employee number, name (first and last names), address, mobile number, email, TFN, salary and joining date. An employee’s salary is recorded differently as per his or her employment type. Employees can be employed as fulltime or casual basis. For a fulltime staff, annual salary is recorded and hourly rate for a casual staff.
Each store creates payslips for all employees work in that store on a weekly basis. As a minimum payslip number, no of hours worked, employee detail, store detail and gross pay are recorded.
AMC sales different products like fashion, health, beauty, electronics etc. Each product is characterised by product number, name, brand, description and price.
Each product can be supplied by one or more supplier and each supplier can supply one or many products. AMC also keeps appropriate details of their suppliers.
Each store maintains an inventory of their products available for sale. The quantity of each product available in store and the quantity ordered are kept.
AMC patron visits the store and shops in the store. Each customer is characterised by customer number, name (first and last names), mobile number and address.
A patron may place orders. An order contains one or many products at a time. A store keeps track of order number, order date, product(s) ordered and quantity ordered for each product.
2 | P a g e
The proprietors of AMC have ap.
Susan Whitfield completed a 13-week SQL Server 2008 certification program through SetFocus, LLC. The intensive course covered database administration, development, and used tools like SQL Server Management Studio. Susan's presentation includes examples from projects building databases, writing T-SQL code, and creating packages, reports, and diagrams. She is looking for SQL-related work and can be contacted at the provided email.
Recipes 8 of Data Warehouse and Business Intelligence - Naming convention tec...Massimo Cenci
The naming convention is a key component of any IT project.
The purpose of this article is to suggest a standard for a practical and effective Data Warehouse design in Oracle environment
The document discusses various aspects of dimension and fact table design in a data warehouse. It explains that dimension tables contain keys, attributes for pivoting in analysis, member properties for labels in reports, and lineage columns for auditing. Fact tables contain measures, foreign keys to dimensions, and sometimes surrogate keys. Measures can be additive, semi-additive, or non-additive depending on whether they can be accurately summed over different dimensions like time.
The document discusses various aspects of dimension and fact table design in a data warehouse. It explains that dimension tables contain keys, attributes for pivoting in analysis, member properties for labels in reports, and lineage columns for auditing. Fact tables contain measures, foreign keys to dimensions, and sometimes surrogate keys. Measures can be additive, semi-additive, or non-additive depending on whether they can be accurately summed over different dimensions like time. Many-to-many relationships require an intermediate dimension table.
The document provides an overview of JavaScript for a beginner audience. It discusses what JavaScript is, why it is used, examples of its capabilities, and how to write JavaScript code. The session will demonstrate JavaScript capabilities, explain code samples, and answer questions. JavaScript allows dynamic functionality on web pages by manipulating the browser and document object model (DOM).
This document outlines an agenda for a talk on 30 LotusScript tips. It begins with an introduction that explains the structure of the talk and why it will cover 30 tips. The agenda is then broken into sections on fundamental tips ("Nursery Slopes"), less well known everyday tips, and more advanced tips to provoke thought. Each section provides 10 tips on topics like using Option Declare, templates and versions, error handling, classes, and performance coding. The document aims to share a variety of LotusScript best practices and techniques.
This document introduces relational databases and their components. Relational databases address issues with flat files like data redundancy and integrity. A relational database uses tables to store entities (things) and their attributes (characteristics). Tables can be related through primary and foreign keys to link related data while avoiding redundancy. This improves data integrity and maintenance compared to flat files.
A relational database organizes data into tables with rows and columns. Each table contains records about a type of entity, with columns representing attributes. Unique identifiers called primary keys are used to link tables together through foreign keys, allowing efficient storage and retrieval of related data. Validation rules can be set on fields to ensure accurate data entry. Relational databases provide benefits like reduced data redundancy, improved data integrity, and easier querying of information.
This document provides a tutorial for setting up a many-to-many relationship in Rails. It describes creating Expense and Tag models with a join table, generating scaffolds, and customizing views and controllers to display tags as checkboxes for selection when creating or editing an expense. The controller is updated to handle the tag selections by finding Tag objects by ID and associating them with the expense on create/update.
This document provides a tutorial for setting up a many-to-many relationship in Rails. It describes creating Expense and Tag models with a join table, generating scaffolds, and customizing views and controllers to display tags as checkboxes for selection when creating or editing an expense. The controller is updated to handle the tag selections by finding Tag objects by ID and associating them with the expense on create/update.
Difference between fact tables and dimension tablesKamran Haider
The document discusses the differences between fact tables and dimension tables in a data warehouse. It also discusses surrogate keys, natural keys, and why surrogate keys are used in data warehouses. Specifically:
- Fact tables contain measures/facts and foreign keys, while dimension tables contain descriptive attributes. Surrogate keys are integers assigned sequentially in dimension tables to join with fact tables.
- Surrogate keys are used instead of natural keys for faster joins, better performance, and to integrate heterogeneous data sources. They allow maintaining historical and current data when natural keys may change over time.
- The document outlines advantages like performance and disadvantages like unnecessary burden during ETL of using surrogate keys versus natural keys which have business meaning but can impact performance
Physical storage in databases involves tables, views, and data types. Tables store data in rows and columns and are made up of columns with assigned data types. Views allow you to display data from tables in different ways. Common data types include numeric, string, date/time, and binary types that determine what values a column can store.
This document provides a tutorial for setting up a many-to-many relationship in a Rails application. It describes creating Expense and Tag models with a joining ExpensesTags table. It details the necessary code for the models, views, and controller to associate expenses with multiple tags. Users can select multiple tags when creating or editing an expense, which are stored in the joining table. The tutorial concludes by demonstrating adding an expense with multiple tags and viewing the associated data.
Teks tersebut menjelaskan arsitektur komputer sederhana bernama SAP-1. SAP-1 dirancang untuk mendemonstrasikan operasi dasar komputer dengan arsitektur yang sederhana untuk mudah dipahami. SAP-1 menggunakan register, memori, dan blok logika untuk menjalankan instruksi seperti penjumlahan dan pengurangan.
Dokumen tersebut merangkum sejarah perkembangan komputer dari generasi pertama hingga generasi pertama, mulai dari rancangan mesin komputasi mekanik oleh Charles Babbage pada abad ke-19 hingga pengembangan komputer digital pertama seperti ENIAC, EDVAC, UNIVAC I, IBM 305 RAMAC, dan EDSAC pada pertengahan abad ke-20 yang menandai dimulainya generasi komputer pertama.
A multiplexer is a digital circuit with two inputs and four outputs. It takes two 4-bit inputs and based on the value of the select line, it outputs one of the two 4-bit inputs. A 2-input 4-bit multiplexer allows the selection of one of two 4-bit inputs to pass through and output based on a single select bit.
Teks tersebut membahas tentang gerbang logika dalam komputer. Secara singkat, gerbang logika adalah rangkaian elektronik yang mengolah sinyal masukan menjadi keluaran berdasarkan logika tertentu, seperti AND, OR, dan NOT. Gerbang-gerbang logika dasar dapat dikombinasikan untuk membentuk gerbang turunan dan fungsi baru.
Dokumen tersebut membahas sembilan bidang pengetahuan (knowledge area) utama manajemen proyek, yaitu manajemen ruang lingkup, waktu, biaya, sumber daya manusia, resiko, komunikasi, kualitas, pengadaan, dan integrasi proyek. Setiap bidang pengetahuan dijelaskan proses dan aktivitasnya dalam mengelola proyek.
Metodologi manajemen proyek terdiri dari 5 tahapan: (1) inisiasi proyek untuk mendefinisikan ruang lingkup dan tujuan proyek, (2) perencanaan proyek untuk merinci jadwal dan anggaran, (3) pelaksanaan proyek untuk merealisasikan perencanaan, (4) pengontrolan proyek untuk memastikan proyek berjalan sesuai rencana, dan (5) penutupan proyek untuk menyelesaikan proyek
Dokumen tersebut membahas tentang latar belakang masalah manajemen proyek yang kurang baik sehingga menyebabkan proyek tidak sesuai target, terlambat, dan melebihi anggaran. Dokumen ini juga menjelaskan konsep dasar manajemen dan organisasi serta bentuk-bentuk organisasi proyek seperti organisasi proyek fungsional, murni, dan matriks.
Penerapan Sistem Manajemen Mutu ISO 9001 dan API Spec Q1 di PT. Pipa Mas Puti...Universitas Putera Batam
Makalah ini membahas penerapan sistem manajemen mutu ISO 9001 dan API Spec Q1 di PT Pipa Mas Putih untuk memenuhi permintaan pelanggan yang semakin meningkat. Penerapan standar mutu internasional diperlukan untuk memenuhi syarat tender dan memperluas pasar. Tulisan ini menjelaskan tujuan dan manfaat penerapan standar tersebut serta ruang lingkup penerapannya di perusahaan.
This document provides an overview of the typical contents and process for developing a business case. It discusses 8 phases for developing a business case including assessing needs, defining the business opportunity, investigating alternatives, evaluating alternatives, defining the project, preparing the report, and reviewing/presenting the business case. The summary highlights key topics like the executive summary, business opportunity, alternatives, benefits, costs, and financial analysis.
CAKE: Sharing Slices of Confidential Data on BlockchainClaudio Di Ciccio
Presented at the CAiSE 2024 Forum, Intelligent Information Systems, June 6th, Limassol, Cyprus.
Synopsis: Cooperative information systems typically involve various entities in a collaborative process within a distributed environment. Blockchain technology offers a mechanism for automating such processes, even when only partial trust exists among participants. The data stored on the blockchain is replicated across all nodes in the network, ensuring accessibility to all participants. While this aspect facilitates traceability, integrity, and persistence, it poses challenges for adopting public blockchains in enterprise settings due to confidentiality issues. In this paper, we present a software tool named Control Access via Key Encryption (CAKE), designed to ensure data confidentiality in scenarios involving public blockchains. After outlining its core components and functionalities, we showcase the application of CAKE in the context of a real-world cyber-security project within the logistics domain.
Paper: https://doi.org/10.1007/978-3-031-61000-4_16
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceIndexBug
Imagine a world where machines not only perform tasks but also learn, adapt, and make decisions. This is the promise of Artificial Intelligence (AI), a technology that's not just enhancing our lives but revolutionizing entire industries.
Things to Consider When Choosing a Website Developer for your Website | FODUUFODUU
Choosing the right website developer is crucial for your business. This article covers essential factors to consider, including experience, portfolio, technical skills, communication, pricing, reputation & reviews, cost and budget considerations and post-launch support. Make an informed decision to ensure your website meets your business goals.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Infrastructure Challenges in Scaling RAG with Custom AI modelsZilliz
Building Retrieval-Augmented Generation (RAG) systems with open-source and custom AI models is a complex task. This talk explores the challenges in productionizing RAG systems, including retrieval performance, response synthesis, and evaluation. We’ll discuss how to leverage open-source models like text embeddings, language models, and custom fine-tuned models to enhance RAG performance. Additionally, we’ll cover how BentoML can help orchestrate and scale these AI components efficiently, ensuring seamless deployment and management of RAG systems in the cloud.
Infrastructure Challenges in Scaling RAG with Custom AI models
Database design guide
1. Database Design Guide
Source : http://www.smart-it-consulting.com/
Before you set up a new database, usually you spend a lot of time at the
white board. Here are some basic tips: my Dos and Don'ts of database
design. Most probably they will reduce your efforts and help you to gain a
clean database design. I didn't write the book on database design, but I
think my experience earned in many projects could be helpful in some
cases. My examples refer to Progress® databases and Progress Software®
4GL, but you'll get the idea, even when you use another database system.
Let's start with a few naming conventions. The usage of dashes, spaces,
digits and special characters is a bad idea, although your database and
operating system might handle these characters (Cobol semantics like
CUST-NAME-1 are ugly and outdated). Ensure the uppercase and lowercase
conversion of each name (applies to tables, prefixes, attributes, sequences
etc.) is unique within the scope of your enterprise-wide databases. Check
your spelling, renaming tables and attributes afterwards is a PITA.
CamelCase all names. Acronyms and abbreviations should not be used in
names when they aren't well known by your users. If you can't avoid them,
write only the first character in capital letters, especially in composite names
like UpsServiceTypes or Customer.VatId. Well, no rule without
exception, ID (unique tuple identifier in a table) as well as OID (enterprise-
wide unique object identifier) should always be printed in capital letters, as
long as the abbreviation is part of the name of a technical attribute
(e.g. VatId - Value Added Tax Identifier vs. CustID or CustOID - primary
key of Customers).
Avoid language mixups, especially if you're not a native speaker and/or your
application has no English user interface. Names
like Buddies.BudVerjaardag sound plain silly, but Maat.MtVerjaardag is
understandable (at least if your understanding of Dutch is flawed). Check
your spelling. Once your application is running, it's hard to live with typos.
Table names and labels designate the business object. Don't use technical
wording nor geek speech. Persistent instances of customers live in a table
named Customers, assigned UPC numbers inAssignedUpcNumbers, UPS
shipments in UpsShipments and UPS parcels in UpsParcels. Since you store
more than one instance of a business object in each table, use plural only.
Each table can be identified by an (enterprise-wide) unique prefix. Never
use a prefix twice. If you have bothInvoices and Inventories, assign
2. different prefixes like Inv for Invoices and Ivt for Inventories. The prefix
is part of each attribute name and should be used in related sequences and
index names as well.
So far, so easy. When it comes to attribute names, naming conventions
become more complicated. Let's start with technical attributes, because
there is no occasion for interpretations.
In order to guarantee uniqueness, each table has a technical primary
key (a surrogate primary key populated by the create trigger with a unique
sequence value, but preferential a UUID), which will never get a
business meaning. Don't argue, primary keys with business meaning as
well as composite keys are a bad idea. There is nothing to say against
additional unique columns with business meaning, but do not merge the
underlying technical implementation with your business logic. Name the
primary key = table prefix + OID (or ID), e.g. CustOID or CustID. If an
object has children or is an attribute of other objects, use the unchanged
and unextended name of the parent table's primary key as foreign key in
the child table respectively referencing table.
Say you've a table Invoices and a table Addresses:
Addresses.AdrOID [primary key]
Addresses.AdrOtherAttributes ...
Invoices.InvOID [primary key]
Invoices.AdrOID [foreign key]
Invoices.InvOtherAttributes ...
Index Invoices.AdrOID and you can code
FOR EACH Addresses OF Invoices:
Do something.
END.
or
FOR EACH Invoices WHERE Invoices.InvNetAmount >= 1000.00,
EACH Addresses OF Invoices WHERE Adresses.AdrZipCode BEGINS '34':
Do something.
END.
instead of
FOR EACH Addresses WHERE Addresses.AdrOID = Invoices.AdrOID:
Do something.
END.
There is one exception to this rule. Sometimes an object is an attribute of
another object multiple times, without being a class itself. Different roles are
marked by a number sign '#'. The most important foreign key name is kept
as is, other roles are extended by '#Role':
Invoices.InvOID [primary key]
Invoices.AdrOID [billing address]
Invoices.AdrOID#Delivery [delivery address]
Actually, this is way beyond a clean (normalized) database design. Also,
most design tools will not handle such non-normalized structures. If
3. possible, you should avoid attribute name extensions, better normalize
instead. To bring this point home, let's say your customers provide
permanent delivery addresses. By the way, delivery addresses tend to have
their own attributes and behavior. Most probably a bunch of shipping
addresses are an attribute of Customers:
DeliveryAddresses.DelAdrOID [primary key]
DeliveryAddresses.CustOID [foreign key]
DeliveryAddresses.AdrOID [foreign key]
DeliveryAddresses.DelAdrDispatchType [another attribute, which in real life
would be the reference to a carrier]
Invoices normalized:
Invoices.InvOID [primary key]
Invoices.AdrOID [billing address]
Invoices.DelAdrOID [delivery address]
Let's come to attributes with business meaning. Besides technical
attributes in different roles, I can think of other cases where it is necessary
to extent attribute names. For example default values. As long as there is
just one default value, put it in the attribute's definition. Otherwise you've a
table storing those values:
Discounts.DiscOID
Discounts.DiscAppliesToBusinessType[e.g. wholesale, distributors, retail...]
Discounts.DiscPercent
Since discounts given to customers are calculated individually, the
percentage can vary from customer to customer and it makes no sense to
reference Discounts in Customers. However, in the interest of a readable
model it is good style to mark the source, therefore the attribute discount
percent of Customerskeeps it's source:
Customers.CustOID
Customers.DiscPercent#Cust
There are other advantages of consistent naming rules. In commercial
applications you're dealing with discount percentages in tons of objects.
Imagine you need to analyze your enterprise wide discount policy. Finding
all instances of discount percentages can become a PITA in complex
systems. Consistent naming provided, you can search in your system tables
for 'DiscPercent*' and you get a complete list:
Discounts.DiscPercent
Customers.DiscPercent#Cust
Invoices.DiscPercent#Inv
InvoiceLines.DiscPercent#InvLine
...
If your application shall be used by a group of (affiliated) companies, where
each single company is representing another client in the multi-client
capable accounting system, things become difficult. The easiest solution
would be the physical splitting of your ERP database. Keep all common
4. objects like countries, currencies, users, clients (=accounting clients) etc. in
one database, and all company related objects in another database. Connect
your users to the first ERP database and the accounting database, let them
choose a client, then create an alias for the client's ERP database to ensure
all client databases can share the same programs. Large operations tend to
shop and sell subsidiary companies every once in a while. The usage of
physical client databases makes this kind of moves a simple and painless
task.
Unfortunately, sometimes a developer's life is not that easy. In a
multicorporate enterprise many subsidiary companies work on the same
projects, billing their time and material partly within the group. That means
subsidiary companies share access to a lot more business objects than just
countries and currencies. Besides a ton of group-wide objects, templates to
ensure enterprise-wide identical customer account numbers and such stuff,
you need the attribute accounting client in many objects. Do not use the
same attribute name in all tables, because database systems and design
tools can't handle the primary relations if you do it. Name the
column client number (or client OID) differently in each table, using the
source pointers explained before, e.g.
Invoices.ClientNumber#Inv
Customers.ClientNumber#Cust
Vendors.ClientNumber#Vend
...
The above said leads to the cognition, that consistent naming is a good
idea in general. IOW: Without a strong naming convention your project
will fail. Each and every name must be self-explanatory and similar
meanings must be kept in identical wording. Some examples:
Invoices.InvPrinted says whether an invoice has been printed or
not, Invoices.InvDatePrinted stores the date of the last
printout, Invoices.InvPrintCounter tells us how many times an invoice
has been printed yet and can be used to mark copies. The same goes for
confirmations of orders and other forms:
OrderConfirmations.OrdConfPrinted, OrderConfirmations.OrdConfDate
Printed, OrderConfirmations.OrdConfPrintCounter and so on.
Look at the first attribute in my example. In common
speech Invoices.InvPrinted can stand for a Boolean value as well as for a
date. To avoid any confusion, you can make it even clearer by naming the
logical attribute Invoices.InvIsPrinted, which leads to perfectly
understandable code like ...
5. FOR EACH Invoices WHERE NOT Invoices.InvIsPrinted AND
Invoices.InvDateCreate =< (TODAY - 10) AND
Invoices.InvIsDispatched,
EACH Customers OF Invoices,
EACH Staff OF Customers:
ASSIGN
lOk = sendEmail(Staff.StEmailAddy,
'Send out invoice # ' + STRING(Invoices.InvNumber) + ' $'
+ string(Invoices.InvGrossAmount),
'To ' + crlf + getMailAddress(Customers.AdrOID) + crlf + '
immediately')
Staff.StBrowniePoints = Staff.StBrowniePoints - 1.
END.
... and more examples. All types of amounts are addressed by the same
name:
Invoices.InvNetAmount Orders.OrdNetAmount ...
Invoices.InvTaxAmount Orders.OrdTaxAmount ...
Invoices.InvGrossAmount Orders.OrdGrossAmount ...
All numbers are called 'Number' and not 'No', 'Num' ('Num' usually means
'number of') or whatever:
Invoices.InvNumber
Customers.CustNumber (if there is a numeric customer number)
Products.PrdUpcNumber
Countries.CoIsoNumber (ISO 3166 numeric code)
...
Alphanumeric codes are (usually) named 'Code' like
Countries.CoIsoCode (ISO 3166 alphanumeric code)
Products.PrdCode (or Products.PrdSku)
Customers.CustAccountCode
Currencies.CurrIsoCode
...
Borderline cases are 3rd party, non-unique technical keys with business
meaning like the UPS 1Z Tracking Number, which contains both digits and
letters. I'd call it UpsParcels.UpsP1zTrackingNumber, because the term is a
matter of common knowledge and, technically spoken, '1Z' even indicates
an alphanumeric value.
The same goes for all common name components like 'description',
'remarks', 'name', 'quantity', 'price' and so on, I guess you've got the idea.
If possible, try to express the data type by attribute names, not only in
attributes of the type date and logical. 'Url' or 'Description' indicate a single-
line character field, 'LongDescriptions', 'Remarks' or 'Notes' usually get
stored in large text fields, 'Percent', 'Amount' and 'Price' imply decimal
values, 'NumberOf' or 'PageNumber' represent integers and so on.
As for the visible parts of your model, there is not much more to say,
except check your spelling before you save definitions and assign a help text
6. to each attribute. Besides the above mentioned object identifiers and one to
many relationships, you need a policy for many to many
relationships too. Those are kind of technical classes, making complex
relationships persistent. Users will never see their names nor attributes, so
you may use geek speech. Here is a proven system: name those tables
composing your unique table prefixes delimited by the digits '2' (to) and '4'
(for). If your customers can belong to different groups, the table
representing the relationship 'customers [belonging] to customer groups' is
named Cust2CustGrp and contains only three keys:
Cust2CustGrp.Cust2CustGrpOID [primary key]
Cust2CustGrp.CustOID [foreign key]
Cust2CustGrp.CustGrpOID [foreign key]
To handle all customers of a group you code
FOR EACH Cust2CustGrp OF CustomerGroups,
EACH Customer OF Cust2CustGrp:
Do something.
END.
To get a list of all groups a customer belongs to you write:
FOR EACH Cust2CustGrp OF Customers,
EACH CustomerGroups of Cust2CustGrp:
Do something.
END.
In some rare cases these prevailing technical classes have other attributes.
Pragmatically, here I'd go for an descriptive table label and stick with the
geeky table name. Actually, most probably those attributes are simple
connections, keeping the table itself invisible to users. E.g. if you've a table
storing Xmas present types, you could assign the type (or value) of presents
depending on one of the groups assigned to your customers:
XmasPresentTypes.XptOID
XmasPresentTypes.XptPostardOnly
XmasPresentTypes.XptPrice
Cust2CustGrp4Xpt.Cust2CustGrp4XptOID [primary key]
Cust2CustGrp4Xpt.Cust2CustGrpOID [foreign key]
Cust2CustGrp4Xpt.XptOID [foreign key]
or
Cust2CustGrp4Xpt.Cust2CustGrp4XptOID [primary key]
Cust2CustGrp4Xpt.CustOID [foreign key]
Cust2CustGrp4Xpt.CustGrpOID [foreign key]
Cust2CustGrp4Xpt.XptOID [foreign key]
Pick whatever fits your needs best.
Now let's come to another important rule: Separate all technical stuff
from your business logic. You can't avoid technical attributes in tables
representing business objects, but you can and you should handle them
separately. For example you can assign values like
Table.PrefixOID
Table.PrefixUserLastUpdate (if you don't log user activities, probably you need to store these
data on creation too)
7. Table.PrefixDateLastUpdate
Table.PrefixTimeLastUpdate
Table.PrefixIsActive || Table.PrefixIsDeleted
in database triggers. Be aware that in n-tier architectures database triggers
usually do not know the user. If you need to log user activities, you can
implement this feature in your key wrapping widgets. Since your
technical primary keys can't be used in user interfaces, you create a key
wrapping widget for each primary key. This widget knows the invisible
primary key and enables the user to choose or enter one or more attributes
with business meaning, which can be used to identify an object. Looking at a
data viewer, those widgets appear just like fill-in fields with search button or
combo boxes. In the background they pass values of technical keys as well
as screen values of their visible attributes with business meaning to an
application server, or another process handling your persistent objects.
Back to logging. Since every data viewer must contain at least one key
wrapping widget (one handling the primary key and probably a few others
handling foreign keys), you can determine the current user here. Just pass
another hidden value to your persistence handler. Then in the database
trigger you compare the old and new buffer, logging changes only. With a
Progress® database, you can fully automate user activity logging using
generated includes in write triggers, made up by a tool accessing the virtual
system tables (VST). By the way, you should assign values to primary keys
in create triggers only. At this point, recap another important rule on state
of the art software design: Do not put any business logic into the user
interface code. Think SOA and encapsulate technical services as well as
audit trail requirements.
Another rule of thumb is: Do not delete physically. Admitted deletions are
technically possible, they are way too expensive, not really necessary and
furthermore you destroy information which as a rule you will need some
day. Deleting logically on the other hand perfectly keeps your referential
integrity, and it is way faster because your database servers update just one
column in a parent table, instead of bothering with often almost endless
cascading deletes along with RI checks. Adding a WHERE clause [NOT]
ParentTable.PrefixIsDeleted, or, much better, [NOT]
ParentTable.PrefixIsActive is cheap in comparison with all the nasty
side effects of physical deletion. Tell your delete button to set a logical
attribute isDeleted to true, or even dump the button and use a check box
instead, which allows your users to reactivate inactive objects.
Large projects can easily exceed the physical limits set by your database
system. If you deal with very large amounts of data in particular entities,
ensure that primary keys of (physically sliced) mega entities are never used
8. as foreign key in other tables. Only the (logical) mega 'table' keeps
knowledge about relations to other entities. That should not lead to
problems, because these entities are usually children of others (for
examplesales transactions of sales slips of POS terminals of shops).
Implement a smart data access layer handling the requests from higher
application levels. Depending on key value ranges and/or date-time
attributes, the data access layer can determine in which table a requested
tuple is located and in which table a new tuple must be stored, while from
the higher level's perspective this conglomerate of tables comes into view as
one logical table.
The next warning has, like the two rules above, the potential for a bunch of
articles: Avoid array fields. Most persistent arrays I saw, were the work of
lazy code monkeys who weren't capable to look a step further. Although
some database systems like Progress® can handle array fields, most
database systems do not (why should they support tables in tables for
database designers not able to normalize properly?). Furthermore, lots of
front ends and underlying components as well as development tools will not
handle extended attributes. Migrating applications it's hard enough to handle
these constructs in settled (legacy) databases, so don't create new troubles.
As for Progress® word indexes, which work like a charm with character
arrays, there is an alternative compatible with other databases. Just add a
word indexed large text field and populate it with a string of the attributes in
question in your write trigger.
Modelers and developers following the relational theory as set in stone most
possible will be offended by some of the code examples above. In former
paradigms it was -politely expressed- not the best practice to use syntax
like ChildTable OF ParentTable, because (using attributes with business
meaning as primary and foreign keys) it was not obvious which attribute
pair got used to join the objects. However, we got rid of that incredible
stupid concept in the meantime. OF has evident advantages:
A clean database design provided, those misunderstandings caused by
ommission cannot occur, because each and every join uses a single pair of
indexed technical keys in both tables. The technical implementation of
relationships has nothing to do with business logic, thus the consistent
usage of OF increases code readability. Actually, technical attributes should
not appear in any code handling business logic (exceptions
like Table.PrefixIsActive, standing for not logically deleted, and other
technical attributes with at least a portion of business meaning admitted).
If OF fails, you have a technical problem like a missing index on a foreign
key column or (indexed) attribute names are equal in both tables, which
9. both must not happen. Fortunately the compiler will quit with an error
message in this case. That means, the consistent usage of OF followed by
a WHERE clause expressing business logic by testing attributes with business
meaning, prevents you from logical errors as well as errors and ommissions
in the physical database design.
As I said in the beginning, my intention was not to write a book explaining
each and every aspect of database design. Most probably that's impossible,
because different business requirements do need different solutions. I wrote
this article off the top of my head on a rainy Saturday afternoon, so please
don't expect completeness. And since I make a living with IT consulting,
you'll agree that it would be a bad idea to publish all my business secrets ;)
Author: Sebastian
Published: December 2004 LastUpdate: May 2005