Fundamentals of Designing Graphs